<?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>64053</bug_id>
          
          <creation_ts>2011-07-06 20:40:53 -0700</creation_ts>
          <short_desc>Move model classes out of layout_package and into models</short_desc>
          <delta_ts>2011-07-06 20:55:25 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dpranke</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>433201</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-06 20:40:53 -0700</bug_when>
    <thetext>Move model classes out of layout_package and into models</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433212</commentid>
    <comment_count>1</comment_count>
      <attachid>99922</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-06 20:51:50 -0700</bug_when>
    <thetext>Created attachment 99922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433216</commentid>
    <comment_count>2</comment_count>
      <attachid>99922</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-06 20:54:42 -0700</bug_when>
    <thetext>Comment on attachment 99922
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433217</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-06 20:55:25 -0700</bug_when>
    <thetext>Committed r90532: &lt;http://trac.webkit.org/changeset/90532&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99922</attachid>
            <date>2011-07-06 20:51:50 -0700</date>
            <delta_ts>2011-07-06 20:54:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64053-20110706205149.patch</filename>
            <type>text/plain</type>
            <size>196073</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDkwNTI4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNTIgQEAKKzIwMTEtMDctMDYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBNb3ZlIG1vZGVsIGNsYXNzZXMgb3V0IG9mIGxheW91dF9wYWNrYWdlIGFuZCBpbnRv
IG1vZGVscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjQwNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdF91bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3Vs
dHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3Ry
ZXN1bHRzX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9yZXN1bHRzanNvbnBhcnNlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvcmVzdWx0c2pzb25wYXJzZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L3NpbmdsZV90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0
b3IucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3Jlc3VsdF9zdW1tYXJ5LnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5
OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5OiBSZW1vdmVkLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFp
bHVyZXMucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlc191bml0dGVzdC5weTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0
X2lucHV0LnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHMucHk6
IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9yZXN1bHRzX3VuaXR0ZXN0LnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVsczogQWRkZWQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL19faW5pdF9fLnB5OiBBZGRlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvcmVzdWx0X3N1bW1h
cnkucHk6IENvcGllZCBmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL3Jlc3VsdF9zdW1tYXJ5LnB5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weTogQ29waWVkIGZyb20g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9l
eHBlY3RhdGlvbnMucHkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5OiBDb3BpZWQgZnJvbSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0
aW9uc191bml0dGVzdC5weS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9tb2RlbHMvdGVzdF9mYWlsdXJlcy5weTogQ29waWVkIGZyb20gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weS4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9mYWlsdXJlc191
bml0dGVzdC5weTogQ29waWVkIGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlc191bml0dGVzdC5weS4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9pbnB1dC5weTogQ29waWVk
IGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
dGVzdF9pbnB1dC5weS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9t
b2RlbHMvdGVzdF9yZXN1bHRzLnB5OiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHMucHkuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcmVzdWx0c191bml0dGVz
dC5weTogQ29waWVkIGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRzX3VuaXR0ZXN0LnB5LgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmcucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmdfdW5pdHRlc3QucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9u
c191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5j
ZXMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJhc2VsaW5l
X2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHk6CisKIDIw
MTEtMDctMDYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
bnJ3dDogZml4IHR5cG8gcHJldmVudGluZyBodHRwIHN0YXJ0dXAgb24gd2luZG93cwpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5weQkocmV2aXNpb24gOTA1
MjgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmxv
Z3Rlc3RpbmcgaQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmxvZ3V0aWxzIGltcG9ydCBj
b25maWd1cmVfbG9nZ2luZwogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9y
dCBkZXRlY3Rfc2NtX3N5c3RlbQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHBv
cnQKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0
X2V4cGVjdGF0aW9ucworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0
ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQg
aW1wb3J0IHBlcDgKIAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
bGF5b3V0dGVzdHJlc3VsdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5CShyZXZpc2lvbiA5MDUyOCkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQkod29y
a2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LnJl
c3VsdHNqc29ucGFyc2VyIGltcG9ydCBSZXN1bHRzSlNPTlBhcnNlcgogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgbG9nCiBmcm9tIHdlYmtpdHB5
LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cCwgU291cFN0cmFp
bmVyCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVz
dF9yZXN1bHRzCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBv
cnQgdGVzdF9mYWlsdXJlcworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9y
dCB0ZXN0X3Jlc3VsdHMKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQg
dGVzdF9mYWlsdXJlcwogCiAKICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIHVuaWZpZWQgd2l0aCBh
bGwgdGhlIGxheW91dCB0ZXN0IHJlc3VsdHMgY29kZSBpbiB0aGUgbGF5b3V0X3Rlc3RzIHBhY2th
Z2UKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVz
dWx0c191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDkwNTI4KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzX3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw4IEBAIGltcG9ydCB1bml0dGVz
dAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQubGF5b3V0dGVzdHJlc3VsdHMgaW1wb3J0IExh
eW91dFRlc3RSZXN1bHRzLCBPUldUUmVzdWx0c0hUTUxQYXJzZXIKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9yZXN1bHRzCi1mcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJl
cworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3Jlc3VsdHMK
K2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwog
ZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNv
dXAKIAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmVzdWx0c2pz
b25wYXJzZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
bmV0L3Jlc3VsdHNqc29ucGFyc2VyLnB5CShyZXZpc2lvbiA5MDUyOCkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9yZXN1bHRzanNvbnBhcnNlci5weQkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsOCBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgaW1wb3J0IHdlYmtp
dHB5LnRoaXJkcGFydHkuc2ltcGxlanNvbiBhcyBqc29uCiAKICMgRklYTUU6IGNvbW1vbiBzaG91
bGQgbmV2ZXIgaW1wb3J0IGZyb20gbmV3LXJ1bi13ZWJraXQtdGVzdHMsIG9uZSBvZiB0aGVzZSBm
aWxlcyBuZWVkcyB0byBtb3ZlLgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3Bh
Y2thZ2UgaW1wb3J0IGpzb25fcmVzdWx0c19nZW5lcmF0b3IsIHRlc3RfZXhwZWN0YXRpb25zLCB0
ZXN0X3Jlc3VsdHMsIHRlc3RfZmFpbHVyZXMKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxh
eW91dF9wYWNrYWdlIGltcG9ydCBqc29uX3Jlc3VsdHNfZ2VuZXJhdG9yCitmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zLCB0ZXN0X3Jlc3Vs
dHMsIHRlc3RfZmFpbHVyZXMKIAogCiAjIFRoZXNlIGFyZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBu
YXZpZ2F0aW5nIHRoZSByZXN1bHRzIGpzb24gc3RydWN0dXJlLgpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L3Jlc3VsdHNqc29ucGFyc2VyX3VuaXR0ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9yZXN1bHRzanNvbnBh
cnNlcl91bml0dGVzdC5weQkocmV2aXNpb24gOTA1MjgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvcmVzdWx0c2pzb25wYXJzZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDggKzI5LDggQEAKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5uZXQucmVzdWx0c2pzb25wYXJzZXIgaW1wb3J0IFJlc3VsdHNKU09OUGFyc2VyCi1mcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9yZXN1bHRz
Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9m
YWlsdXJlcworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3Jl
c3VsdHMKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWls
dXJlcwogCiAKIGNsYXNzIFJlc3VsdHNKU09OUGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QvYnVpbGRi
b3RfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2J1aWxkYm90L2J1aWxkYm90X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA5MDUyOCkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdF91bml0
dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQCBpbXBvcnQgdW5pdHRlc3QK
IAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmxheW91dHRlc3RyZXN1bHRzIGltcG9ydCBMYXlv
dXRUZXN0UmVzdWx0cwogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1aWxkYm90IGltcG9ydCBC
dWlsZEJvdCwgQnVpbGRlciwgQnVpbGQKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91
dF9wYWNrYWdlIGltcG9ydCB0ZXN0X3Jlc3VsdHMKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCitmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfcmVzdWx0cworZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFy
dHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cAogCiAKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWFuYWdlci5weQkocmV2aXNpb24gOTA1MjgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC01Mywx
MiArNTMsMTIgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaQogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1wb3J0IHdvcmtlcgogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fbGF5b3V0X3Jl
c3VsdHNfZ2VuZXJhdG9yCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2Fn
ZSBpbXBvcnQganNvbl9yZXN1bHRzX2dlbmVyYXRvcgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCi1mcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwotZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0cwog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVz
dWx0c191cGxvYWRlcgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2Uu
cmVzdWx0X3N1bW1hcnkgaW1wb3J0IFJlc3VsdFN1bW1hcnkKLWZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLmxheW91dF9wYWNrYWdlLnRlc3RfaW5wdXQgaW1wb3J0IFRlc3RJbnB1dAorZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucworZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCitmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfcmVzdWx0cworZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfaW5wdXQgaW1wb3J0IFRlc3RJbnB1dAor
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnJlc3VsdF9zdW1tYXJ5IGltcG9ydCBS
ZXN1bHRTdW1tYXJ5CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgcHJp
bnRpbmcKIAogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5IGltcG9ydCBzaW1wbGVqc29uCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2Vy
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDkwNTI4KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdl
cl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwCiBmcm9tIHdlYmtpdHB5IGltcG9ydCBsYXlv
dXRfdGVzdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBydW5fd2Via2l0X3Rl
c3RzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy5tYW5hZ2VyIGltcG9y
dCBNYW5hZ2VyLCBuYXR1cmFsX3NvcnRfa2V5LCB0ZXN0X2tleSwgVGVzdFJ1bkludGVycnVwdGVk
RXhjZXB0aW9uLCBUZXN0U2hhcmQKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9w
YWNrYWdlLnJlc3VsdF9zdW1tYXJ5IGltcG9ydCBSZXN1bHRTdW1tYXJ5Citmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5tb2RlbHMucmVzdWx0X3N1bW1hcnkgaW1wb3J0IFJlc3VsdFN1bW1hcnkK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzIGltcG9ydCBwcmludGluZwogZnJvbSB3
ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5u
ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CShyZXZpc2lvbiA5MDUyOCkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0
X3J1bm5lci5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDExIEBACiBpbXBvcnQgbG9n
Z2luZwogaW1wb3J0IHRpbWUKIAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5kcml2
ZXIgaW1wb3J0IERyaXZlcklucHV0LCBEcml2ZXJPdXRwdXQKLWZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwotZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZmFpbHVyZXMKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X3Jlc3Vs
dF93cml0ZXIKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLnRlc3Rf
cmVzdWx0cyBpbXBvcnQgVGVzdFJlc3VsdAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9y
dC5kcml2ZXIgaW1wb3J0IERyaXZlcklucHV0LCBEcml2ZXJPdXRwdXQKK2Zyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKK2Zyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcworZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfcmVzdWx0cyBpbXBvcnQgVGVzdFJlc3VsdAogCiAK
IF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlci5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIu
cHkJKHJldmlzaW9uIDkwNTI4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvd29ya2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw5IEBA
IGltcG9ydCB0cmFjZWJhY2sKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgc3Rh
Y2tfdXRpbHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzIGltcG9ydCBt
YW5hZ2VyX3dvcmtlcl9icm9rZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xs
ZXJzIGltcG9ydCBzaW5nbGVfdGVzdF9ydW5uZXIKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwotZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0cworZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucworZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3Jlc3VsdHMKKwogCiBfbG9n
ID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5b3V0X3Jlc3VsdHNfZ2Vu
ZXJhdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5CShyZXZp
c2lvbiA5MDUyOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL2pzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw4ICsyOSw4IEBACiBpbXBvcnQgbG9nZ2luZwogCiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQganNvbl9yZXN1bHRzX2dlbmVyYXRvcgotZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0
YXRpb25zCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQg
dGVzdF9mYWlsdXJlcworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0
ZXN0X2V4cGVjdGF0aW9ucworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9y
dCB0ZXN0X2ZhaWx1cmVzCiBpbXBvcnQgd2Via2l0cHkudGhpcmRwYXJ0eS5zaW1wbGVqc29uIGFz
IHNpbXBsZWpzb24KIAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25f
cmVzdWx0c19nZW5lcmF0b3IucHkJKHJldmlzaW9uIDkwNTI4KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRv
ci5weQkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQCBpbXBvcnQgdXJsbGliMgogaW1w
b3J0IHhtbC5kb20ubWluaWRvbQogCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRf
cGFja2FnZSBpbXBvcnQgdGVzdF9yZXN1bHRzX3VwbG9hZGVyCi0KIGltcG9ydCB3ZWJraXRweS50
aGlyZHBhcnR5LnNpbXBsZWpzb24gYXMgc2ltcGxlanNvbgogCiAjIEEgSlNPTiByZXN1bHRzIGdl
bmVyYXRvciBmb3IgZ2VuZXJpYyB0ZXN0cy4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3JfdW5pdHRl
c3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvcl91bml0dGVzdC5weQkocmV2aXNp
b24gOTA1MjgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw3ICszNCw3IEBAIGltcG9ydCByYW5kb20KIAogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtIGltcG9ydCBmaWxlc3lzdGVtX21vY2sKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LmxheW91dF9wYWNrYWdlIGltcG9ydCBqc29uX3Jlc3VsdHNfZ2VuZXJhdG9yCi1mcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMK
K2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBlY3RhdGlv
bnMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHRlc3QKIGZyb20gd2Vi
a2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFy
dHkgaW1wb3J0IHNpbXBsZWpzb24KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Jlc3VsdF9zdW1tYXJ5LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Jlc3VsdF9z
dW1tYXJ5LnB5CShyZXZpc2lvbiA5MDUyOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Jlc3VsdF9zdW1tYXJ5LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDkxICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAy
MDEwIEdhYm9yIFJhcGNzYW55aSAocmdhYm9yQGluZi51LXN6ZWdlZC5odSksIFVuaXZlcnNpdHkg
b2YgU3plZ2VkCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJSdW4gbGF5b3V0IHRlc3RzLiIiIgot
Ci1pbXBvcnQgbG9nZ2luZwotCi1pbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKLQotX2xvZyA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMucnVuX3dlYmtpdF90ZXN0cyIp
Ci0KLVRlc3RFeHBlY3RhdGlvbnMgPSB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25z
Ci0KLQotY2xhc3MgUmVzdWx0U3VtbWFyeShvYmplY3QpOgotICAgICIiIkEgY2xhc3MgZm9yIHBh
cnRpdGlvbmluZyB0aGUgdGVzdCByZXN1bHRzIHdlIGdldCBpbnRvIGJ1Y2tldHMuCi0KLSAgICBU
aGlzIGNsYXNzIGlzIGJhc2ljYWxseSBhIGdsb3JpZmllZCBzdHJ1Y3QgYW5kIGl0J3MgcHJpdmF0
ZSB0byB0aGlzIGZpbGUKLSAgICBzbyB3ZSBkb24ndCBib3RoZXIgd2l0aCBhbnkgaW5mb3JtYXRp
b24gaGlkaW5nLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4cGVjdGF0aW9ucywgdGVz
dF9maWxlcyk6Ci0gICAgICAgIHNlbGYudG90YWwgPSBsZW4odGVzdF9maWxlcykKLSAgICAgICAg
c2VsZi5yZW1haW5pbmcgPSBzZWxmLnRvdGFsCi0gICAgICAgIHNlbGYuZXhwZWN0YXRpb25zID0g
ZXhwZWN0YXRpb25zCi0gICAgICAgIHNlbGYuZXhwZWN0ZWQgPSAwCi0gICAgICAgIHNlbGYudW5l
eHBlY3RlZCA9IDAKLSAgICAgICAgc2VsZi51bmV4cGVjdGVkX2ZhaWx1cmVzID0gMAotICAgICAg
ICBzZWxmLnVuZXhwZWN0ZWRfY3Jhc2hlcyA9IDAKLSAgICAgICAgc2VsZi51bmV4cGVjdGVkX3Rp
bWVvdXRzID0gMAotICAgICAgICBzZWxmLnRlc3RzX2J5X2V4cGVjdGF0aW9uID0ge30KLSAgICAg
ICAgc2VsZi50ZXN0c19ieV90aW1lbGluZSA9IHt9Ci0gICAgICAgIHNlbGYucmVzdWx0cyA9IHt9
Ci0gICAgICAgIHNlbGYudW5leHBlY3RlZF9yZXN1bHRzID0ge30KLSAgICAgICAgc2VsZi5mYWls
dXJlcyA9IHt9Ci0gICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0YXRpb25bdGVzdF9leHBlY3Rh
dGlvbnMuU0tJUF0gPSBzZXQoKQotICAgICAgICBmb3IgZXhwZWN0YXRpb24gaW4gVGVzdEV4cGVj
dGF0aW9ucy5FWFBFQ1RBVElPTlMudmFsdWVzKCk6Ci0gICAgICAgICAgICBzZWxmLnRlc3RzX2J5
X2V4cGVjdGF0aW9uW2V4cGVjdGF0aW9uXSA9IHNldCgpCi0gICAgICAgIGZvciB0aW1lbGluZSBp
biBUZXN0RXhwZWN0YXRpb25zLlRJTUVMSU5FUy52YWx1ZXMoKToKLSAgICAgICAgICAgIHNlbGYu
dGVzdHNfYnlfdGltZWxpbmVbdGltZWxpbmVdID0gZXhwZWN0YXRpb25zLmdldF90ZXN0c193aXRo
X3RpbWVsaW5lKHRpbWVsaW5lKQotCi0gICAgZGVmIGFkZChzZWxmLCByZXN1bHQsIGV4cGVjdGVk
KToKLSAgICAgICAgIiIiQWRkIGEgVGVzdFJlc3VsdCBpbnRvIHRoZSBhcHByb3ByaWF0ZSBiaW4u
Ci0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICByZXN1bHQ6IFRlc3RSZXN1bHQKLSAgICAgICAg
ICBleHBlY3RlZDogd2hldGhlciB0aGUgcmVzdWx0IHdhcyB3aGF0IHdlIGV4cGVjdGVkIGl0IHRv
IGJlLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLnRlc3RzX2J5X2V4cGVjdGF0aW9uW3Jl
c3VsdC50eXBlXS5hZGQocmVzdWx0LnRlc3RfbmFtZSkKLSAgICAgICAgc2VsZi5yZXN1bHRzW3Jl
c3VsdC50ZXN0X25hbWVdID0gcmVzdWx0Ci0gICAgICAgIHNlbGYucmVtYWluaW5nIC09IDEKLSAg
ICAgICAgaWYgbGVuKHJlc3VsdC5mYWlsdXJlcyk6Ci0gICAgICAgICAgICBzZWxmLmZhaWx1cmVz
W3Jlc3VsdC50ZXN0X25hbWVdID0gcmVzdWx0LmZhaWx1cmVzCi0gICAgICAgIGlmIGV4cGVjdGVk
OgotICAgICAgICAgICAgc2VsZi5leHBlY3RlZCArPSAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBzZWxmLnVuZXhwZWN0ZWRfcmVzdWx0c1tyZXN1bHQudGVzdF9uYW1lXSA9IHJlc3VsdAot
ICAgICAgICAgICAgc2VsZi51bmV4cGVjdGVkICs9IDEKLSAgICAgICAgICAgIGlmIGxlbihyZXN1
bHQuZmFpbHVyZXMpOgotICAgICAgICAgICAgICAgIHNlbGYudW5leHBlY3RlZF9mYWlsdXJlcyAr
PSAxCi0gICAgICAgICAgICBpZiByZXN1bHQudHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFT
SDoKLSAgICAgICAgICAgICAgICBzZWxmLnVuZXhwZWN0ZWRfY3Jhc2hlcyArPSAxCi0gICAgICAg
ICAgICBlbGlmIHJlc3VsdC50eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLlRJTUVPVVQ6Ci0gICAg
ICAgICAgICAgICAgc2VsZi51bmV4cGVjdGVkX3RpbWVvdXRzICs9IDEKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRp
b25zLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5CShyZXZpc2lvbiA5MDUyOCkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3Rf
ZXhwZWN0YXRpb25zLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkxOCArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMK
LSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
IyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJBIGhlbHBlciBjbGFzcyBmb3Ig
cmVhZGluZyBpbiBhbmQgZGVhbGluZyB3aXRoIHRlc3RzIGV4cGVjdGF0aW9ucwotZm9yIGxheW91
dCB0ZXN0cy4KLSIiIgotCi1pbXBvcnQgaXRlcnRvb2xzCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0
IHJlCi0KLWltcG9ydCB3ZWJraXRweS50aGlyZHBhcnR5LnNpbXBsZWpzb24gYXMgc2ltcGxlanNv
bgotCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlv
dXRfcGFja2FnZS4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgInRlc3RfZXhwZWN0YXRpb25z
IikKLQotIyBUZXN0IGV4cGVjdGF0aW9uIGFuZCBtb2RpZmllciBjb25zdGFudHMuCi0jIEZJWE1F
OiByYW5nZSgpIHN0YXJ0cyB3aXRoIDAgd2hpY2ggbWFrZXMgaWYgZXhwZWN0YXRpb24gY2hlY2tz
IGhhcmRlcgotIyBhcyBQQVNTIGlzIDAuCi0oUEFTUywgRkFJTCwgVEVYVCwgSU1BR0UsIElNQUdF
X1BMVVNfVEVYVCwgQVVESU8sIFRJTUVPVVQsIENSQVNILCBTS0lQLCBXT05URklYLAotIFNMT1cs
IFJFQkFTRUxJTkUsIE1JU1NJTkcsIEZMQUtZLCBOT1csIE5PTkUpID0gcmFuZ2UoMTYpCi0KLSMg
VGVzdCBleHBlY3RhdGlvbiBmaWxlIHVwZGF0ZSBhY3Rpb24gY29uc3RhbnRzCi0oTk9fQ0hBTkdF
LCBSRU1PVkVfVEVTVCwgUkVNT1ZFX1BMQVRGT1JNLCBBRERfUExBVEZPUk1TX0VYQ0VQVF9USElT
KSA9IHJhbmdlKDQpCi0KLQotZGVmIHJlc3VsdF93YXNfZXhwZWN0ZWQocmVzdWx0LCBleHBlY3Rl
ZF9yZXN1bHRzLCB0ZXN0X25lZWRzX3JlYmFzZWxpbmluZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RfaXNfc2tpcHBlZCk6Ci0gICAgIiIiUmV0dXJucyB3aGV0aGVyIHdlIGdvdCBhIHJl
c3VsdCB3ZSB3ZXJlIGV4cGVjdGluZy4KLSAgICBBcmdzOgotICAgICAgICByZXN1bHQ6IGFjdHVh
bCByZXN1bHQgb2YgYSB0ZXN0IGV4ZWN1dGlvbgotICAgICAgICBleHBlY3RlZF9yZXN1bHRzOiBz
ZXQgb2YgcmVzdWx0cyBsaXN0ZWQgaW4gdGVzdF9leHBlY3RhdGlvbnMKLSAgICAgICAgdGVzdF9u
ZWVkc19yZWJhc2VsaW5pbmc6IHdoZXRoZXIgdGVzdCB3YXMgbWFya2VkIGFzIFJFQkFTRUxJTkUK
LSAgICAgICAgdGVzdF9pc19za2lwcGVkOiB3aGV0aGVyIHRlc3Qgd2FzIG1hcmtlZCBhcyBTS0lQ
IiIiCi0gICAgaWYgcmVzdWx0IGluIGV4cGVjdGVkX3Jlc3VsdHM6Ci0gICAgICAgIHJldHVybiBU
cnVlCi0gICAgaWYgcmVzdWx0IGluIChJTUFHRSwgVEVYVCwgSU1BR0VfUExVU19URVhUKSBhbmQg
RkFJTCBpbiBleHBlY3RlZF9yZXN1bHRzOgotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGlmIHJl
c3VsdCA9PSBNSVNTSU5HIGFuZCB0ZXN0X25lZWRzX3JlYmFzZWxpbmluZzoKLSAgICAgICAgcmV0
dXJuIFRydWUKLSAgICBpZiByZXN1bHQgPT0gU0tJUCBhbmQgdGVzdF9pc19za2lwcGVkOgotICAg
ICAgICByZXR1cm4gVHJ1ZQotICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiByZW1vdmVfcGl4ZWxf
ZmFpbHVyZXMoZXhwZWN0ZWRfcmVzdWx0cyk6Ci0gICAgIiIiUmV0dXJucyBhIGNvcHkgb2YgdGhl
IGV4cGVjdGVkIHJlc3VsdHMgZm9yIGEgdGVzdCwgZXhjZXB0IHRoYXQgd2UKLSAgICBkcm9wIGFu
eSBwaXhlbCBmYWlsdXJlcyBhbmQgcmV0dXJuIHRoZSByZW1haW5pbmcgZXhwZWN0YXRpb25zLiBG
b3IgZXhhbXBsZSwKLSAgICBpZiB3ZSdyZSBub3QgcnVubmluZyBwaXhlbCB0ZXN0cywgdGhlbiB0
ZXN0cyBleHBlY3RlZCB0byBmYWlsIGFzIElNQUdFCi0gICAgd2lsbCBQQVNTLiIiIgotICAgIGV4
cGVjdGVkX3Jlc3VsdHMgPSBleHBlY3RlZF9yZXN1bHRzLmNvcHkoKQotICAgIGlmIElNQUdFIGlu
IGV4cGVjdGVkX3Jlc3VsdHM6Ci0gICAgICAgIGV4cGVjdGVkX3Jlc3VsdHMucmVtb3ZlKElNQUdF
KQotICAgICAgICBleHBlY3RlZF9yZXN1bHRzLmFkZChQQVNTKQotICAgIGlmIElNQUdFX1BMVVNf
VEVYVCBpbiBleHBlY3RlZF9yZXN1bHRzOgotICAgICAgICBleHBlY3RlZF9yZXN1bHRzLnJlbW92
ZShJTUFHRV9QTFVTX1RFWFQpCi0gICAgICAgIGV4cGVjdGVkX3Jlc3VsdHMuYWRkKFRFWFQpCi0g
ICAgcmV0dXJuIGV4cGVjdGVkX3Jlc3VsdHMKLQotCi1kZWYgc3RyaXBfY29tbWVudHMobGluZSk6
Ci0gICAgIiIiU3RyaXBzIGNvbW1lbnRzIGZyb20gYSBsaW5lIGFuZCByZXR1cm4gTm9uZSBpZiB0
aGUgbGluZSBpcyBlbXB0eQotICAgIG9yIGVsc2UgdGhlIGNvbnRlbnRzIG9mIGxpbmUgd2l0aCBs
ZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMgcmVtb3ZlZAotICAgIGFuZCBhbGwgb3RoZXIgd2hp
dGVzcGFjZSBjb2xsYXBzZWQiIiIKLQotICAgIGNvbW1lbnRJbmRleCA9IGxpbmUuZmluZCgnLy8n
KQotICAgIGlmIGNvbW1lbnRJbmRleCBpcyAtMToKLSAgICAgICAgY29tbWVudEluZGV4ID0gbGVu
KGxpbmUpCi0KLSAgICBsaW5lID0gcmUuc3ViKHInXHMrJywgJyAnLCBsaW5lWzpjb21tZW50SW5k
ZXhdLnN0cmlwKCkpCi0gICAgaWYgbGluZSA9PSAnJzoKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAg
ICBlbHNlOgotICAgICAgICByZXR1cm4gbGluZQotCi0KLWNsYXNzIFBhcnNlRXJyb3IoRXhjZXB0
aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmF0YWwsIGVycm9ycyk6Ci0gICAgICAgIHNl
bGYuZmF0YWwgPSBmYXRhbAotICAgICAgICBzZWxmLmVycm9ycyA9IGVycm9ycwotCi0gICAgZGVm
IF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnXG4nLmpvaW4obWFwKHN0ciwgc2VsZi5l
cnJvcnMpKQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJ1BhcnNl
RXJyb3IoZmF0YWw9JXMsIGVycm9ycz0lcyknICUgKHNlbGYuZmF0YWwsIHNlbGYuZXJyb3JzKQot
Ci0KLWNsYXNzIE1vZGlmaWVyc0FuZEV4cGVjdGF0aW9uczoKLSAgICAiIiJBIGhvbGRlciBmb3Ig
bW9kaWZpZXJzIGFuZCBleHBlY3RhdGlvbnMgb24gYSB0ZXN0IHRoYXQgc2VyaWFsaXplcyB0bwot
ICAgIEpTT04uIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kaWZpZXJzLCBleHBlY3Rh
dGlvbnMpOgotICAgICAgICBzZWxmLm1vZGlmaWVycyA9IG1vZGlmaWVycwotICAgICAgICBzZWxm
LmV4cGVjdGF0aW9ucyA9IGV4cGVjdGF0aW9ucwotCi0KLWNsYXNzIEV4cGVjdGF0aW9uc0pzb25F
bmNvZGVyKHNpbXBsZWpzb24uSlNPTkVuY29kZXIpOgotICAgICIiIkpTT04gZW5jb2RlciB0aGF0
IGNhbiBoYW5kbGUgTW9kaWZpZXJzQW5kRXhwZWN0YXRpb25zIG9iamVjdHMuIiIiCi0gICAgZGVm
IGRlZmF1bHQoc2VsZiwgb2JqKToKLSAgICAgICAgIyBBIE1vZGlmaWVyc0FuZEV4cGVjdGF0aW9u
cyBvYmplY3QgaGFzIHR3byBmaWVsZHMsIGVhY2ggb2Ygd2hpY2gKLSAgICAgICAgIyBpcyBhIGRp
Y3QuIFNpbmNlIEpTT05FbmNvZGVycyBoYW5kbGUgYWxsIHRoZSBidWlsdGluIHR5cGVzIGRpcmVj
dGx5LAotICAgICAgICAjIHRoZSBvbmx5IHRpbWUgdGhpcyByb3V0aW5lIHNob3VsZCBiZSBjYWxs
ZWQgaXMgb24gdGhlIHRvcCBsZXZlbAotICAgICAgICAjIG9iamVjdCAoaS5lLiwgdGhlIGVuY29k
ZXIgc2hvdWxkbid0IHJlY3Vyc2UpLgotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShvYmosIE1v
ZGlmaWVyc0FuZEV4cGVjdGF0aW9ucykKLSAgICAgICAgcmV0dXJuIHsibW9kaWZpZXJzIjogb2Jq
Lm1vZGlmaWVycywKLSAgICAgICAgICAgICAgICAiZXhwZWN0YXRpb25zIjogb2JqLmV4cGVjdGF0
aW9uc30KLQotCi1jbGFzcyBUZXN0RXhwZWN0YXRpb25zOgotICAgICIiIlRlc3QgZXhwZWN0YXRp
b25zIGNvbnNpc3Qgb2YgbGluZXMgd2l0aCBzcGVjaWZpY2F0aW9ucyBvZiB3aGF0Ci0gICAgdG8g
ZXhwZWN0IGZyb20gbGF5b3V0IHRlc3QgY2FzZXMuIFRoZSB0ZXN0IGNhc2VzIGNhbiBiZSBkaXJl
Y3RvcmllcwotICAgIGluIHdoaWNoIGNhc2UgdGhlIGV4cGVjdGF0aW9ucyBhcHBseSB0byBhbGwg
dGVzdCBjYXNlcyBpbiB0aGF0Ci0gICAgZGlyZWN0b3J5IGFuZCBhbnkgc3ViZGlyZWN0b3J5LiBU
aGUgZm9ybWF0IGlzIGFsb25nIHRoZSBsaW5lcyBvZjoKLQotICAgICAgTGF5b3V0VGVzdHMvZmFz
dC9qcy9maXhtZS5qcyA9IEZBSUwKLSAgICAgIExheW91dFRlc3RzL2Zhc3QvanMvZmxha3kuanMg
PSBGQUlMIFBBU1MKLSAgICAgIExheW91dFRlc3RzL2Zhc3QvanMvY3Jhc2guanMgPSBDUkFTSCBU
SU1FT1VUIEZBSUwgUEFTUwotICAgICAgLi4uCi0KLSAgICBUbyBhZGQgb3RoZXIgb3B0aW9uczoK
LSAgICAgIFNLSVAgOiBMYXlvdXRUZXN0cy9mYXN0L2pzL25vLWdvb2QuanMgPSBUSU1FT1VUIFBB
U1MKLSAgICAgIERFQlVHIDogTGF5b3V0VGVzdHMvZmFzdC9qcy9uby1nb29kLmpzID0gVElNRU9V
VCBQQVNTCi0gICAgICBERUJVRyBTS0lQIDogTGF5b3V0VGVzdHMvZmFzdC9qcy9uby1nb29kLmpz
ID0gVElNRU9VVCBQQVNTCi0gICAgICBMSU5VWCBERUJVRyBTS0lQIDogTGF5b3V0VGVzdHMvZmFz
dC9qcy9uby1nb29kLmpzID0gVElNRU9VVCBQQVNTCi0gICAgICBMSU5VWCBXSU4gOiBMYXlvdXRU
ZXN0cy9mYXN0L2pzL25vLWdvb2QuanMgPSBUSU1FT1VUIFBBU1MKLQotICAgIFNLSVA6IERvZXNu
J3QgcnVuIHRoZSB0ZXN0LgotICAgIFNMT1c6IFRoZSB0ZXN0IHRha2VzIGEgbG9uZyB0aW1lIHRv
IHJ1biwgYnV0IGRvZXMgbm90IHRpbWVvdXQgaW5kZWZpbml0ZWx5LgotICAgIFdPTlRGSVg6IEZv
ciB0ZXN0cyB0aGF0IHdlIG5ldmVyIGludGVuZCB0byBwYXNzIG9uIGEgZ2l2ZW4gcGxhdGZvcm0u
Ci0KLSAgICBOb3RlczoKLSAgICAgIC1BIHRlc3QgY2Fubm90IGJlIGJvdGggU0xPVyBhbmQgVElN
RU9VVAotICAgICAgLUEgdGVzdCBzaG91bGQgb25seSBiZSBvbmUgb2YgSU1BR0UsIFRFWFQsIElN
QUdFK1RFWFQsIEFVRElPLCBvciBGQUlMLgotICAgICAgIEZBSUwgaXMgYSBsZWdhY3kgdmFsdWUg
dGhhdCBjdXJyZW50bHkgbWVhbnMgZWl0aGVyIElNQUdFLAotICAgICAgIFRFWFQsIG9yIElNQUdF
K1RFWFQuIE9uY2Ugd2UgaGF2ZSBmaW5pc2hlZCBtaWdyYXRpbmcgdGhlIGV4cGVjdGF0aW9ucywK
LSAgICAgICB3ZSBzaG91bGQgY2hhbmdlIEZBSUwgdG8gaGF2ZSB0aGUgbWVhbmluZyBvZiBJTUFH
RStURVhUIGFuZCByZW1vdmUgdGhlCi0gICAgICAgSU1BR0UrVEVYVCBpZGVudGlmaWVyLgotICAg
ICAgLUEgdGVzdCBjYW4gYmUgaW5jbHVkZWQgdHdpY2UsIGJ1dCBub3QgdmlhIHRoZSBzYW1lIHBh
dGguCi0gICAgICAtSWYgYSB0ZXN0IGlzIGluY2x1ZGVkIHR3aWNlLCB0aGVuIHRoZSBtb3JlIHBy
ZWNpc2UgcGF0aCB3aW5zLgotICAgICAgLUNSQVNIIHRlc3RzIGNhbm5vdCBiZSBXT05URklYCi0g
ICAgIiIiCi0KLSAgICBURVNUX0xJU1QgPSAidGVzdF9leHBlY3RhdGlvbnMudHh0IgotCi0gICAg
RVhQRUNUQVRJT05TID0geydwYXNzJzogUEFTUywKLSAgICAgICAgICAgICAgICAgICAgJ2ZhaWwn
OiBGQUlMLAotICAgICAgICAgICAgICAgICAgICAndGV4dCc6IFRFWFQsCi0gICAgICAgICAgICAg
ICAgICAgICdpbWFnZSc6IElNQUdFLAotICAgICAgICAgICAgICAgICAgICAnaW1hZ2UrdGV4dCc6
IElNQUdFX1BMVVNfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgJ2F1ZGlvJzogQVVESU8sCi0g
ICAgICAgICAgICAgICAgICAgICd0aW1lb3V0JzogVElNRU9VVCwKLSAgICAgICAgICAgICAgICAg
ICAgJ2NyYXNoJzogQ1JBU0gsCi0gICAgICAgICAgICAgICAgICAgICdtaXNzaW5nJzogTUlTU0lO
R30KLQotICAgIEVYUEVDVEFUSU9OX0RFU0NSSVBUSU9OUyA9IHtTS0lQOiAoJ3NraXBwZWQnLCAn
c2tpcHBlZCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVNTOiAoJ3Bhc3Mn
LCAncGFzc2VzJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBSUw6ICgnZmFp
bHVyZScsICdmYWlsdXJlcycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURVhU
OiAoJ3RleHQgZGlmZiBtaXNtYXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAndGV4dCBkaWZmIG1pc21hdGNoJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIElNQUdFOiAoJ2ltYWdlIG1pc21hdGNoJywgJ2ltYWdlIG1pc21hdGNoJyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNQUdFX1BMVVNfVEVYVDogKCdpbWFnZSBhbmQg
dGV4dCBtaXNtYXRjaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdpbWFnZSBhbmQgdGV4dCBtaXNtYXRjaCcpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBVURJTzogKCdhdWRpbyBtaXNtYXRjaCcsICdhdWRpbyBtaXNtYXRjaCcp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUkFTSDogKCdEdW1wUmVuZGVyVHJl
ZSBjcmFzaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0R1bXBS
ZW5kZXJUcmVlIGNyYXNoZXMnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElN
RU9VVDogKCd0ZXN0IHRpbWVkIG91dCcsICd0ZXN0cyB0aW1lZCBvdXQnKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTUlTU0lORzogKCdubyBleHBlY3RlZCByZXN1bHQgZm91bmQn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vIGV4cGVjdGVk
IHJlc3VsdHMgZm91bmQnKX0KLQotICAgIEVYUEVDVEFUSU9OX09SREVSID0gKFBBU1MsIENSQVNI
LCBUSU1FT1VULCBNSVNTSU5HLCBJTUFHRV9QTFVTX1RFWFQsCi0gICAgICAgVEVYVCwgSU1BR0Us
IEFVRElPLCBGQUlMLCBTS0lQKQotCi0gICAgQlVJTERfVFlQRVMgPSAoJ2RlYnVnJywgJ3JlbGVh
c2UnKQotCi0gICAgTU9ESUZJRVJTID0geydza2lwJzogU0tJUCwKLSAgICAgICAgICAgICAgICAg
J3dvbnRmaXgnOiBXT05URklYLAotICAgICAgICAgICAgICAgICAnc2xvdyc6IFNMT1csCi0gICAg
ICAgICAgICAgICAgICdyZWJhc2VsaW5lJzogUkVCQVNFTElORSwKLSAgICAgICAgICAgICAgICAg
J25vbmUnOiBOT05FfQotCi0gICAgVElNRUxJTkVTID0geyd3b250Zml4JzogV09OVEZJWCwKLSAg
ICAgICAgICAgICAgICAgJ25vdyc6IE5PV30KLQotICAgIFJFU1VMVF9UWVBFUyA9IHsnc2tpcCc6
IFNLSVAsCi0gICAgICAgICAgICAgICAgICAgICdwYXNzJzogUEFTUywKLSAgICAgICAgICAgICAg
ICAgICAgJ2ZhaWwnOiBGQUlMLAotICAgICAgICAgICAgICAgICAgICAnZmxha3knOiBGTEFLWX0K
LQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBleHBlY3RhdGlvbl9mcm9tX3N0cmluZyhjbHMs
IHN0cmluZyk6Ci0gICAgICAgIGFzc2VydCgnICcgbm90IGluIHN0cmluZykgICMgVGhpcyBvbmx5
IGhhbmRsZXMgb25lIGV4cGVjdGF0aW9uIGF0IGEgdGltZS4KLSAgICAgICAgcmV0dXJuIGNscy5F
WFBFQ1RBVElPTlMuZ2V0KHN0cmluZy5sb3dlcigpKQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBvcnQsIHRlc3RzLCBleHBlY3RhdGlvbnMsCi0gICAgICAgICAgICAgICAgIHRlc3RfY29uZmln
LCBpc19saW50X21vZGUsIG92ZXJyaWRlcz1Ob25lKToKLSAgICAgICAgIiIiTG9hZHMgYW5kIHBh
cnNlcyB0aGUgdGVzdCBleHBlY3RhdGlvbnMgZ2l2ZW4gaW4gdGhlIHN0cmluZy4KLSAgICAgICAg
QXJnczoKLSAgICAgICAgICAgIHBvcnQ6IGhhbmRsZSB0byBvYmplY3QgY29udGFpbmluZyBwbGF0
Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5Ci0gICAgICAgICAgICB0ZXN0czogbGlzdCBvZiBh
bGwgb2YgdGhlIHRlc3QgZmlsZXMKLSAgICAgICAgICAgIGV4cGVjdGF0aW9uczogdGVzdCBleHBl
Y3RhdGlvbnMgYXMgYSBzdHJpbmcKLSAgICAgICAgICAgIHRlc3RfY29uZmlnOiBzcGVjaWZpYyB2
YWx1ZXMgdG8gY2hlY2sgYWdhaW5zdCB3aGVuCi0gICAgICAgICAgICAgICAgcGFyc2luZyB0aGUg
ZmlsZSAodXN1YWxseSBwb3J0LnRlc3RfY29uZmlnKCksCi0gICAgICAgICAgICAgICAgYnV0IG1h
eSBiZSBkaWZmZXJlbnQgd2hlbiBsaW50aW5nIG9yIGRvaW5nIG90aGVyIHRoaW5ncykuCi0gICAg
ICAgICAgICBpc19saW50X21vZGU6IElmIFRydWUsIGp1c3QgcGFyc2UgdGhlIGV4cGVjdGF0aW9u
cyBzdHJpbmcKLSAgICAgICAgICAgICAgICBsb29raW5nIGZvciBlcnJvcnMuCi0gICAgICAgICAg
ICBvdmVycmlkZXM6IHRlc3QgZXhwZWN0YXRpb25zIHRoYXQgYXJlIGFsbG93ZWQgdG8gb3ZlcnJp
ZGUgYW55Ci0gICAgICAgICAgICAgICAgZW50cmllcyBpbiB8ZXhwZWN0YXRpb25zfC4gVGhpcyBp
cyB1c2VkIGJ5IGNhbGxlcnMKLSAgICAgICAgICAgICAgICB0aGF0IG5lZWQgdG8gbWFuYWdlIHR3
byBzZXRzIG9mIGV4cGVjdGF0aW9ucyAoZS5nLiwgdXBzdHJlYW0KLSAgICAgICAgICAgICAgICBh
bmQgZG93bnN0cmVhbSBleHBlY3RhdGlvbnMpLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5f
cG9ydCA9IHBvcnQKLSAgICAgICAgc2VsZi5fZnMgPSBwb3J0Ll9maWxlc3lzdGVtCi0gICAgICAg
IHNlbGYuX2V4cGVjdGF0aW9ucyA9IGV4cGVjdGF0aW9ucwotICAgICAgICBzZWxmLl9mdWxsX3Rl
c3RfbGlzdCA9IHRlc3RzCi0gICAgICAgIHNlbGYuX3Rlc3RfY29uZmlnID0gdGVzdF9jb25maWcK
LSAgICAgICAgc2VsZi5faXNfbGludF9tb2RlID0gaXNfbGludF9tb2RlCi0gICAgICAgIHNlbGYu
X292ZXJyaWRlcyA9IG92ZXJyaWRlcwotICAgICAgICBzZWxmLl9lcnJvcnMgPSBbXQotICAgICAg
ICBzZWxmLl9ub25fZmF0YWxfZXJyb3JzID0gW10KLQotICAgICAgICAjIE1hcHMgcmVsYXRpdmUg
dGVzdCBwYXRocyBhcyBsaXN0ZWQgaW4gdGhlIGV4cGVjdGF0aW9ucyBmaWxlIHRvIGEKLSAgICAg
ICAgIyBsaXN0IG9mIG1hcHMgY29udGFpbmluZyBtb2RpZmllcnMgYW5kIGV4cGVjdGF0aW9ucyBm
b3IgZWFjaCB0aW1lCi0gICAgICAgICMgdGhlIHRlc3QgaXMgbGlzdGVkIGluIHRoZSBleHBlY3Rh
dGlvbnMgZmlsZS4gV2UgdXNlIHRoaXMgdG8KLSAgICAgICAgIyBrZWVwIGEgcmVwcmVzZW50YXRp
b24gb2YgdGhlIGVudGlyZSBsaXN0IG9mIGV4cGVjdGF0aW9ucywgZXZlbgotICAgICAgICAjIGlu
dmFsaWQgb25lcy4KLSAgICAgICAgc2VsZi5fYWxsX2V4cGVjdGF0aW9ucyA9IHt9Ci0KLSAgICAg
ICAgIyBNYXBzIGEgdGVzdCB0byBpdHMgbGlzdCBvZiBleHBlY3RhdGlvbnMuCi0gICAgICAgIHNl
bGYuX3Rlc3RfdG9fZXhwZWN0YXRpb25zID0ge30KLQotICAgICAgICAjIE1hcHMgYSB0ZXN0IHRv
IGl0cyBsaXN0IG9mIG9wdGlvbnMgKHN0cmluZyB2YWx1ZXMpCi0gICAgICAgIHNlbGYuX3Rlc3Rf
dG9fb3B0aW9ucyA9IHt9Ci0KLSAgICAgICAgIyBNYXBzIGEgdGVzdCB0byBpdHMgbGlzdCBvZiBt
b2RpZmllcnM6IHRoZSBjb25zdGFudHMgYXNzb2NpYXRlZCB3aXRoCi0gICAgICAgICMgdGhlIG9w
dGlvbnMgbWludXMgYW55IGJ1ZyBvciBwbGF0Zm9ybSBzdHJpbmdzCi0gICAgICAgIHNlbGYuX3Rl
c3RfdG9fbW9kaWZpZXJzID0ge30KLQotICAgICAgICAjIE1hcHMgYSB0ZXN0IHRvIHRoZSBiYXNl
IHBhdGggdGhhdCBpdCB3YXMgbGlzdGVkIHdpdGggaW4gdGhlIGxpc3QgYW5kCi0gICAgICAgICMg
dGhlIG51bWJlciBvZiBtYXRjaGVzIHRoYXQgYmFzZSBwYXRoIGhhZC4KLSAgICAgICAgc2VsZi5f
dGVzdF9saXN0X3BhdGhzID0ge30KLQotICAgICAgICBzZWxmLl9tb2RpZmllcl90b190ZXN0cyA9
IHNlbGYuX2RpY3Rfb2Zfc2V0cyhzZWxmLk1PRElGSUVSUykKLSAgICAgICAgc2VsZi5fZXhwZWN0
YXRpb25fdG9fdGVzdHMgPSBzZWxmLl9kaWN0X29mX3NldHMoc2VsZi5FWFBFQ1RBVElPTlMpCi0g
ICAgICAgIHNlbGYuX3RpbWVsaW5lX3RvX3Rlc3RzID0gc2VsZi5fZGljdF9vZl9zZXRzKHNlbGYu
VElNRUxJTkVTKQotICAgICAgICBzZWxmLl9yZXN1bHRfdHlwZV90b190ZXN0cyA9IHNlbGYuX2Rp
Y3Rfb2Zfc2V0cyhzZWxmLlJFU1VMVF9UWVBFUykKLQotICAgICAgICBzZWxmLl9yZWFkKHNlbGYu
X2dldF9pdGVyYWJsZV9leHBlY3RhdGlvbnMoc2VsZi5fZXhwZWN0YXRpb25zKSwKLSAgICAgICAg
ICAgICAgICAgICBvdmVycmlkZXNfYWxsb3dlZD1GYWxzZSkKLQotICAgICAgICAjIExpc3Qgb2Yg
dGVzdHMgdGhhdCBhcmUgaW4gdGhlIG92ZXJyaWRlcyBmaWxlICh1c2VkIGZvciBjaGVja2luZyBm
b3IKLSAgICAgICAgIyBkdXBsaWNhdGVzIGluc2lkZSB0aGUgb3ZlcnJpZGVzIGZpbGUgaXRzZWxm
KS4gTm90ZSB0aGF0IGp1c3QgYmVjYXVzZQotICAgICAgICAjIGEgdGVzdCBpcyBpbiB0aGlzIHNl
dCBkb2Vzbid0IG1lYW4gaXQncyBuZWNlc3NhcmlseSBvdmVycmlkZGluZyBhCi0gICAgICAgICMg
ZXhwZWN0YXRpb24gaW4gdGhlIHJlZ3VsYXIgZXhwZWN0YXRpb25zOyB0aGUgdGVzdCBtaWdodCBu
b3QgYmUKLSAgICAgICAgIyBtZW50aW9uZWQgaW4gdGhlIHJlZ3VsYXIgZXhwZWN0YXRpb25zIGZp
bGUgYXQgYWxsLgotICAgICAgICBzZWxmLl9vdmVycmlkZGluZ190ZXN0cyA9IHNldCgpCi0KLSAg
ICAgICAgaWYgb3ZlcnJpZGVzOgotICAgICAgICAgICAgc2VsZi5fcmVhZChzZWxmLl9nZXRfaXRl
cmFibGVfZXhwZWN0YXRpb25zKHNlbGYuX292ZXJyaWRlcyksCi0gICAgICAgICAgICAgICAgICAg
ICAgIG92ZXJyaWRlc19hbGxvd2VkPVRydWUpCi0KLSAgICAgICAgc2VsZi5faGFuZGxlX2FueV9y
ZWFkX2Vycm9ycygpCi0gICAgICAgIHNlbGYuX3Byb2Nlc3NfdGVzdHNfd2l0aG91dF9leHBlY3Rh
dGlvbnMoKQotCi0gICAgIyBUT0RPKG9qYW4pOiBBbGxvdyBmb3IgcmVtb3Zpbmcgc2tpcHBlZCB0
ZXN0cyB3aGVuIGdldHRpbmcgdGhlIGxpc3Qgb2YKLSAgICAjIHRlc3RzIHRvIHJ1biwgYnV0IG5v
dCB3aGVuIGdldHRpbmcgbWV0cmljcy4KLQotICAgIGRlZiBnZXRfcmViYXNlbGluaW5nX2ZhaWx1
cmVzKHNlbGYpOgotICAgICAgICByZXR1cm4gKHNlbGYuZ2V0X3Rlc3Rfc2V0KFJFQkFTRUxJTkUs
IEZBSUwpIHwKLSAgICAgICAgICAgICAgICBzZWxmLmdldF90ZXN0X3NldChSRUJBU0VMSU5FLCBJ
TUFHRSkgfAotICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3Rfc2V0KFJFQkFTRUxJTkUsIFRF
WFQpIHwKLSAgICAgICAgICAgICAgICBzZWxmLmdldF90ZXN0X3NldChSRUJBU0VMSU5FLCBJTUFH
RV9QTFVTX1RFWFQpIHwKLSAgICAgICAgICAgICAgICBzZWxmLmdldF90ZXN0X3NldChSRUJBU0VM
SU5FLCBBVURJTykpCi0KLSAgICBkZWYgZ2V0X2V4cGVjdGF0aW9uc19zdHJpbmcoc2VsZiwgdGVz
dCk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGV4cGVjdGF0b25zIGZvciB0aGUgZ2l2ZW4gdGVz
dCBhcyBhbiB1cHBlcmNhc2Ugc3RyaW5nLgotICAgICAgICBJZiB0aGVyZSBhcmUgbm8gZXhwZWN0
YXRpb25zIGZvciB0aGUgdGVzdCwgdGhlbiAiUEFTUyIgaXMgcmV0dXJuZWQuIiIiCi0gICAgICAg
IGV4cGVjdGF0aW9ucyA9IHNlbGYuZ2V0X2V4cGVjdGF0aW9ucyh0ZXN0KQotICAgICAgICByZXR2
YWwgPSBbXQotCi0gICAgICAgIGZvciBleHBlY3RhdGlvbiBpbiBleHBlY3RhdGlvbnM6Ci0gICAg
ICAgICAgICByZXR2YWwuYXBwZW5kKHNlbGYuZXhwZWN0YXRpb25fdG9fc3RyaW5nKGV4cGVjdGF0
aW9uKSkKLQotICAgICAgICByZXR1cm4gIiAiLmpvaW4ocmV0dmFsKQotCi0gICAgZGVmIGV4cGVj
dGF0aW9uX3RvX3N0cmluZyhzZWxmLCBleHBlY3RhdGlvbik6Ci0gICAgICAgICIiIlJldHVybiB0
aGUgdXBwZXJjYXNlZCBzdHJpbmcgZXF1aXZhbGVudCBvZiBhIGdpdmVuIGV4cGVjdGF0aW9uLiIi
IgotICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLkVYUEVDVEFUSU9OUy5pdGVtcygpOgotICAgICAg
ICAgICAgaWYgaXRlbVsxXSA9PSBleHBlY3RhdGlvbjoKLSAgICAgICAgICAgICAgICByZXR1cm4g
aXRlbVswXS51cHBlcigpCi0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXhwZWN0YXRpb24pCi0K
LSAgICBkZWYgbWF0Y2hlc19hbl9leHBlY3RlZF9yZXN1bHQoc2VsZiwgdGVzdCwgcmVzdWx0LCBw
aXhlbF90ZXN0c19hcmVfZW5hYmxlZCk6Ci0gICAgICAgIGV4cGVjdGVkX3Jlc3VsdHMgPSBzZWxm
LmdldF9leHBlY3RhdGlvbnModGVzdCkKLSAgICAgICAgaWYgbm90IHBpeGVsX3Rlc3RzX2FyZV9l
bmFibGVkOgotICAgICAgICAgICAgZXhwZWN0ZWRfcmVzdWx0cyA9IHJlbW92ZV9waXhlbF9mYWls
dXJlcyhleHBlY3RlZF9yZXN1bHRzKQotICAgICAgICByZXR1cm4gcmVzdWx0X3dhc19leHBlY3Rl
ZChyZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Jl
c3VsdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXNfcmViYXNl
bGluaW5nKHRlc3QpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhh
c19tb2RpZmllcih0ZXN0LCBTS0lQKSkKLQotICAgIGRlZiBpc19yZWJhc2VsaW5pbmcoc2VsZiwg
dGVzdCk6Ci0gICAgICAgIHJldHVybiBzZWxmLmhhc19tb2RpZmllcih0ZXN0LCBSRUJBU0VMSU5F
KQotCi0gICAgZGVmIF9oYW5kbGVfYW55X3JlYWRfZXJyb3JzKHNlbGYpOgotICAgICAgICBpZiBs
ZW4oc2VsZi5fZXJyb3JzKSBvciBsZW4oc2VsZi5fbm9uX2ZhdGFsX2Vycm9ycyk6Ci0gICAgICAg
ICAgICBfbG9nLmVycm9yKCJGQUlMVVJFUyBGT1IgJXMiICUgc3RyKHNlbGYuX3Rlc3RfY29uZmln
KSkKLQotICAgICAgICAgICAgZm9yIGVycm9yIGluIHNlbGYuX2Vycm9yczoKLSAgICAgICAgICAg
ICAgICBfbG9nLmVycm9yKGVycm9yKQotICAgICAgICAgICAgZm9yIGVycm9yIGluIHNlbGYuX25v
bl9mYXRhbF9lcnJvcnM6Ci0gICAgICAgICAgICAgICAgX2xvZy5lcnJvcihlcnJvcikKLQotICAg
ICAgICAgICAgaWYgbGVuKHNlbGYuX2Vycm9ycyk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUGFy
c2VFcnJvcihmYXRhbD1UcnVlLCBlcnJvcnM9c2VsZi5fZXJyb3JzKQotICAgICAgICAgICAgaWYg
bGVuKHNlbGYuX25vbl9mYXRhbF9lcnJvcnMpIGFuZCBzZWxmLl9pc19saW50X21vZGU6Ci0gICAg
ICAgICAgICAgICAgcmFpc2UgUGFyc2VFcnJvcihmYXRhbD1GYWxzZSwgZXJyb3JzPXNlbGYuX25v
bl9mYXRhbF9lcnJvcnMpCi0KLSAgICBkZWYgX3Byb2Nlc3NfdGVzdHNfd2l0aG91dF9leHBlY3Rh
dGlvbnMoc2VsZik6Ci0gICAgICAgIGV4cGVjdGF0aW9ucyA9IHNldChbUEFTU10pCi0gICAgICAg
IG9wdGlvbnMgPSBbXQotICAgICAgICBtb2RpZmllcnMgPSBbXQotICAgICAgICBpZiBzZWxmLl9m
dWxsX3Rlc3RfbGlzdDoKLSAgICAgICAgICAgIGZvciB0ZXN0IGluIHNlbGYuX2Z1bGxfdGVzdF9s
aXN0OgotICAgICAgICAgICAgICAgIGlmIG5vdCB0ZXN0IGluIHNlbGYuX3Rlc3RfbGlzdF9wYXRo
czoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWRkX3Rlc3QodGVzdCwgbW9kaWZpZXJzLCBl
eHBlY3RhdGlvbnMsIG9wdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkPUZhbHNlKQotCi0gICAgZGVm
IF9kaWN0X29mX3NldHMoc2VsZiwgc3RyaW5nc190b19jb25zdGFudHMpOgotICAgICAgICAiIiJU
YWtlcyBhIGRpY3Qgb2Ygc3RyaW5ncy0+Y29uc3RhbnRzIGFuZCByZXR1cm5zIGEgZGljdCBtYXBw
aW5nCi0gICAgICAgIGVhY2ggY29uc3RhbnQgdG8gYW4gZW1wdHkgc2V0LiIiIgotICAgICAgICBk
ID0ge30KLSAgICAgICAgZm9yIGMgaW4gc3RyaW5nc190b19jb25zdGFudHMudmFsdWVzKCk6Ci0g
ICAgICAgICAgICBkW2NdID0gc2V0KCkKLSAgICAgICAgcmV0dXJuIGQKLQotICAgIGRlZiBfZ2V0
X2l0ZXJhYmxlX2V4cGVjdGF0aW9ucyhzZWxmLCBleHBlY3RhdGlvbnNfc3RyKToKLSAgICAgICAg
IiIiUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjYW4gYmUgaXRlcmF0ZWQgb3Zlci4gQWxsb3dzIGZv
ciBub3QgY2FyaW5nCi0gICAgICAgIGFib3V0IHdoZXRoZXIgd2UncmUgaXRlcmF0aW5nIG92ZXIg
YSBmaWxlIG9yIGEgbmV3LWxpbmUgc2VwYXJhdGVkCi0gICAgICAgIHN0cmluZy4iIiIKLSAgICAg
ICAgaXRlcmFibGUgPSBbeCArICJcbiIgZm9yIHggaW4gZXhwZWN0YXRpb25zX3N0ci5zcGxpdCgi
XG4iKV0KLSAgICAgICAgIyBTdHJpcCBmaW5hbCBlbnRyeSBpZiBpdCdzIGVtcHR5IHRvIGF2b2lk
IGFkZGVkIGluIGFuIGV4dHJhCi0gICAgICAgICMgbmV3bGluZS4KLSAgICAgICAgaWYgaXRlcmFi
bGVbLTFdID09ICJcbiI6Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmFibGVbOi0xXQotICAgICAg
ICByZXR1cm4gaXRlcmFibGUKLQotICAgIGRlZiBnZXRfdGVzdF9zZXQoc2VsZiwgbW9kaWZpZXIs
IGV4cGVjdGF0aW9uPU5vbmUsIGluY2x1ZGVfc2tpcHM9VHJ1ZSk6Ci0gICAgICAgIGlmIGV4cGVj
dGF0aW9uIGlzIE5vbmU6Ci0gICAgICAgICAgICB0ZXN0cyA9IHNlbGYuX21vZGlmaWVyX3RvX3Rl
c3RzW21vZGlmaWVyXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGVzdHMgPSAoc2VsZi5f
ZXhwZWN0YXRpb25fdG9fdGVzdHNbZXhwZWN0YXRpb25dICYKLSAgICAgICAgICAgICAgICBzZWxm
Ll9tb2RpZmllcl90b190ZXN0c1ttb2RpZmllcl0pCi0KLSAgICAgICAgaWYgbm90IGluY2x1ZGVf
c2tpcHM6Ci0gICAgICAgICAgICB0ZXN0cyA9IHRlc3RzIC0gc2VsZi5nZXRfdGVzdF9zZXQoU0tJ
UCwgZXhwZWN0YXRpb24pCi0KLSAgICAgICAgcmV0dXJuIHRlc3RzCi0KLSAgICBkZWYgZ2V0X3Rl
c3RzX3dpdGhfcmVzdWx0X3R5cGUoc2VsZiwgcmVzdWx0X3R5cGUpOgotICAgICAgICByZXR1cm4g
c2VsZi5fcmVzdWx0X3R5cGVfdG9fdGVzdHNbcmVzdWx0X3R5cGVdCi0KLSAgICBkZWYgZ2V0X3Rl
c3RzX3dpdGhfdGltZWxpbmUoc2VsZiwgdGltZWxpbmUpOgotICAgICAgICByZXR1cm4gc2VsZi5f
dGltZWxpbmVfdG9fdGVzdHNbdGltZWxpbmVdCi0KLSAgICBkZWYgZ2V0X29wdGlvbnMoc2VsZiwg
dGVzdCk6Ci0gICAgICAgICIiIlRoaXMgcmV0dXJucyB0aGUgZW50aXJlIHNldCBvZiBvcHRpb25z
IGZvciB0aGUgZ2l2ZW4gdGVzdAotICAgICAgICAodGhlIG1vZGlmaWVycyBwbHVzIHRoZSBCVUdY
WFhYIGlkZW50aWZpZXIpLiBUaGlzIGlzIHVzZWQgYnkgdGhlCi0gICAgICAgIExUVEYgZGFzaGJv
YXJkLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fdGVzdF90b19vcHRpb25zW3Rlc3RdCi0KLSAg
ICBkZWYgaGFzX21vZGlmaWVyKHNlbGYsIHRlc3QsIG1vZGlmaWVyKToKLSAgICAgICAgcmV0dXJu
IHRlc3QgaW4gc2VsZi5fbW9kaWZpZXJfdG9fdGVzdHNbbW9kaWZpZXJdCi0KLSAgICBkZWYgZ2V0
X2V4cGVjdGF0aW9ucyhzZWxmLCB0ZXN0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfdG9f
ZXhwZWN0YXRpb25zW3Rlc3RdCi0KLSAgICBkZWYgZ2V0X2V4cGVjdGF0aW9uc19qc29uX2Zvcl9h
bGxfcGxhdGZvcm1zKHNlbGYpOgotICAgICAgICAjIFNwZWNpZnkgc2VwYXJhdG9ycyBpbiBvcmRl
ciB0byBnZXQgY29tcGFjdCBlbmNvZGluZy4KLSAgICAgICAgcmV0dXJuIEV4cGVjdGF0aW9uc0pz
b25FbmNvZGVyKHNlcGFyYXRvcnM9KCcsJywgJzonKSkuZW5jb2RlKAotICAgICAgICAgICAgc2Vs
Zi5fYWxsX2V4cGVjdGF0aW9ucykKLQotICAgIGRlZiBnZXRfbm9uX2ZhdGFsX2Vycm9ycyhzZWxm
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX25vbl9mYXRhbF9lcnJvcnMKLQotICAgIGRlZiByZW1v
dmVfcmViYXNlbGluZWRfdGVzdHMoc2VsZiwgdGVzdHMpOgotICAgICAgICAiIiJSZXR1cm5zIGEg
Y29weSBvZiB0aGUgZXhwZWN0YXRpb25zIHdpdGggdGhlIHRlc3RzIHJlbW92ZWQuIiIiCi0gICAg
ICAgIGxpbmVzID0gW10KLSAgICAgICAgZm9yIChsaW5lbm8sIGxpbmUpIGluIGVudW1lcmF0ZShz
ZWxmLl9nZXRfaXRlcmFibGVfZXhwZWN0YXRpb25zKHNlbGYuX2V4cGVjdGF0aW9ucykpOgotICAg
ICAgICAgICAgdGVzdCwgb3B0aW9ucywgXyA9IHNlbGYucGFyc2VfZXhwZWN0YXRpb25zX2xpbmUo
bGluZSwgbGluZW5vKQotICAgICAgICAgICAgaWYgbm90ICh0ZXN0IGFuZCB0ZXN0IGluIHRlc3Rz
IGFuZCAncmViYXNlbGluZScgaW4gb3B0aW9ucyk6Ci0gICAgICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKGxpbmUpCi0gICAgICAgIHJldHVybiAnJy5qb2luKGxpbmVzKQotCi0gICAgZGVmIHBhcnNl
X2V4cGVjdGF0aW9uc19saW5lKHNlbGYsIGxpbmUsIGxpbmVubyk6Ci0gICAgICAgICIiIlBhcnNl
cyBhIGxpbmUgZnJvbSB0ZXN0X2V4cGVjdGF0aW9ucy50eHQgYW5kIHJldHVybnMgYSB0dXBsZQot
ICAgICAgICB3aXRoIHRoZSB0ZXN0IHBhdGgsIG9wdGlvbnMgYXMgYSBsaXN0LCBleHBlY3RhdGlv
bnMgYXMgYSBsaXN0LiIiIgotICAgICAgICBsaW5lID0gc3RyaXBfY29tbWVudHMobGluZSkKLSAg
ICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICByZXR1cm4gKE5vbmUsIE5vbmUsIE5vbmUp
Ci0KLSAgICAgICAgb3B0aW9ucyA9IFtdCi0gICAgICAgIGlmIGxpbmUuZmluZCgiOiIpIGlzIC0x
OgotICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywgIk1pc3NpbmcgYSAnOiciLCBs
aW5lKQotICAgICAgICAgICAgcmV0dXJuIChOb25lLCBOb25lLCBOb25lKQotCi0gICAgICAgIHBh
cnRzID0gbGluZS5zcGxpdCgnOicpCi0KLSAgICAgICAgIyBGSVhNRTogdmVyaWZ5IHRoYXQgdGhl
cmUgaXMgZXhhY3RseSBvbmUgY29sb24gaW4gdGhlIGxpbmUuCi0KLSAgICAgICAgb3B0aW9ucyA9
IHNlbGYuX2dldF9vcHRpb25zX2xpc3QocGFydHNbMF0pCi0gICAgICAgIHRlc3RfYW5kX2V4cGVj
dGF0aW9uID0gcGFydHNbMV0uc3BsaXQoJz0nKQotICAgICAgICB0ZXN0ID0gdGVzdF9hbmRfZXhw
ZWN0YXRpb25bMF0uc3RyaXAoKQotICAgICAgICBpZiAobGVuKHRlc3RfYW5kX2V4cGVjdGF0aW9u
KSBpcyBub3QgMik6Ci0gICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLCAiTWlzc2lu
ZyBleHBlY3RhdGlvbnMuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfYW5kX2V4
cGVjdGF0aW9uKQotICAgICAgICAgICAgZXhwZWN0YXRpb25zID0gTm9uZQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgZXhwZWN0YXRpb25zID0gc2VsZi5fZ2V0X29wdGlvbnNfbGlzdCh0ZXN0
X2FuZF9leHBlY3RhdGlvblsxXSkKLQotICAgICAgICByZXR1cm4gKHRlc3QsIG9wdGlvbnMsIGV4
cGVjdGF0aW9ucykKLQotICAgIGRlZiBfYWRkX3RvX2FsbF9leHBlY3RhdGlvbnMoc2VsZiwgdGVz
dCwgb3B0aW9ucywgZXhwZWN0YXRpb25zKToKLSAgICAgICAgaWYgbm90IHRlc3QgaW4gc2VsZi5f
YWxsX2V4cGVjdGF0aW9uczoKLSAgICAgICAgICAgIHNlbGYuX2FsbF9leHBlY3RhdGlvbnNbdGVz
dF0gPSBbXQotICAgICAgICBzZWxmLl9hbGxfZXhwZWN0YXRpb25zW3Rlc3RdLmFwcGVuZCgKLSAg
ICAgICAgICAgIE1vZGlmaWVyc0FuZEV4cGVjdGF0aW9ucyhvcHRpb25zLCBleHBlY3RhdGlvbnMp
KQotCi0gICAgZGVmIF9yZWFkKHNlbGYsIGV4cGVjdGF0aW9ucywgb3ZlcnJpZGVzX2FsbG93ZWQp
OgotICAgICAgICAiIiJGb3IgZWFjaCB0ZXN0IGluIGFuIGV4cGVjdGF0aW9ucyBpdGVyYWJsZSwg
Z2VuZXJhdGUgdGhlCi0gICAgICAgIGV4cGVjdGF0aW9ucyBmb3IgaXQuIiIiCi0gICAgICAgIGxp
bmVubyA9IDAKLSAgICAgICAgbWF0Y2hlciA9IE1vZGlmaWVyTWF0Y2hlcihzZWxmLl90ZXN0X2Nv
bmZpZykKLSAgICAgICAgZm9yIGxpbmUgaW4gZXhwZWN0YXRpb25zOgotICAgICAgICAgICAgbGlu
ZW5vICs9IDEKLSAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfbGluZShsaW5lLCBsaW5lbm8sIG1h
dGNoZXIsIG92ZXJyaWRlc19hbGxvd2VkKQotCi0gICAgZGVmIF9wcm9jZXNzX2xpbmUoc2VsZiwg
bGluZSwgbGluZW5vLCBtYXRjaGVyLCBvdmVycmlkZXNfYWxsb3dlZCk6Ci0gICAgICAgIHRlc3Rf
bGlzdF9wYXRoLCBvcHRpb25zLCBleHBlY3RhdGlvbnMgPSBcCi0gICAgICAgICAgICBzZWxmLnBh
cnNlX2V4cGVjdGF0aW9uc19saW5lKGxpbmUsIGxpbmVubykKLSAgICAgICAgaWYgbm90IGV4cGVj
dGF0aW9uczoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHNlbGYuX2FkZF90b19hbGxf
ZXhwZWN0YXRpb25zKHRlc3RfbGlzdF9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIgIi5qb2luKG9wdGlvbnMpLnVwcGVyKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAiLmpvaW4oZXhwZWN0YXRpb25zKS51cHBlcigpKQot
Ci0gICAgICAgIG51bV9tYXRjaGVzID0gc2VsZi5fY2hlY2tfb3B0aW9ucyhtYXRjaGVyLCBvcHRp
b25zLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X2xpc3RfcGF0aCkKLSAgICAgICAgaWYgbnVtX21hdGNoZXMgPT0gTW9kaWZpZXJNYXRjaGVy
Lk5PX01BVENIOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgZXhwZWN0YXRpb25zID0g
c2VsZi5fcGFyc2VfZXhwZWN0YXRpb25zKGV4cGVjdGF0aW9ucywgbGluZW5vLAotICAgICAgICAg
ICAgdGVzdF9saXN0X3BhdGgpCi0KLSAgICAgICAgc2VsZi5fY2hlY2tfb3B0aW9uc19hZ2FpbnN0
X2V4cGVjdGF0aW9ucyhvcHRpb25zLCBleHBlY3RhdGlvbnMsCi0gICAgICAgICAgICBsaW5lbm8s
IHRlc3RfbGlzdF9wYXRoKQotCi0gICAgICAgIGlmIHNlbGYuX2NoZWNrX3BhdGhfZG9lc19ub3Rf
ZXhpc3QobGluZW5vLCB0ZXN0X2xpc3RfcGF0aCk6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAg
ICAgICBpZiBub3Qgc2VsZi5fZnVsbF90ZXN0X2xpc3Q6Ci0gICAgICAgICAgICB0ZXN0cyA9IFt0
ZXN0X2xpc3RfcGF0aF0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRlc3RzID0gc2VsZi5f
ZXhwYW5kX3Rlc3RzKHRlc3RfbGlzdF9wYXRoKQotCi0gICAgICAgIG1vZGlmaWVycyA9IFtvIGZv
ciBvIGluIG9wdGlvbnMgaWYgbyBpbiBzZWxmLk1PRElGSUVSU10KLSAgICAgICAgc2VsZi5fYWRk
X3Rlc3RzKHRlc3RzLCBleHBlY3RhdGlvbnMsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sIG1vZGlm
aWVycywgbnVtX21hdGNoZXMsIG9wdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkKQotCi0gICAgZGVm
IF9nZXRfb3B0aW9uc19saXN0KHNlbGYsIGxpc3RTdHJpbmcpOgotICAgICAgICByZXR1cm4gW3Bh
cnQuc3RyaXAoKS5sb3dlcigpIGZvciBwYXJ0IGluIGxpc3RTdHJpbmcuc3RyaXAoKS5zcGxpdCgn
ICcpXQotCi0gICAgZGVmIF9wYXJzZV9leHBlY3RhdGlvbnMoc2VsZiwgZXhwZWN0YXRpb25zLCBs
aW5lbm8sIHRlc3RfbGlzdF9wYXRoKToKLSAgICAgICAgcmVzdWx0ID0gc2V0KCkKLSAgICAgICAg
Zm9yIHBhcnQgaW4gZXhwZWN0YXRpb25zOgotICAgICAgICAgICAgZXhwZWN0YXRpb24gPSBUZXN0
RXhwZWN0YXRpb25zLmV4cGVjdGF0aW9uX2Zyb21fc3RyaW5nKHBhcnQpCi0gICAgICAgICAgICBp
ZiBleHBlY3RhdGlvbiBpcyBOb25lOiAgIyBDYXJlZnVsLCBQQVNTIGlzIGN1cnJlbnRseSAwLgot
ICAgICAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sICdVbnN1cHBvcnRlZCBleHBl
Y3RhdGlvbjogJXMnICUgcGFydCwgdGVzdF9saXN0X3BhdGgpCi0gICAgICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgIHJlc3VsdC5hZGQoZXhwZWN0YXRpb24pCi0gICAgICAgIHJldHVy
biByZXN1bHQKLQotICAgIGRlZiBfY2hlY2tfb3B0aW9ucyhzZWxmLCBtYXRjaGVyLCBvcHRpb25z
LCBsaW5lbm8sIHRlc3RfbGlzdF9wYXRoKToKLSAgICAgICAgbWF0Y2hfcmVzdWx0ID0gc2VsZi5f
Y2hlY2tfc3ludGF4KG1hdGNoZXIsIG9wdGlvbnMsIGxpbmVubywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQotICAgICAgICBzZWxmLl9j
aGVja19zZW1hbnRpY3Mob3B0aW9ucywgbGluZW5vLCB0ZXN0X2xpc3RfcGF0aCkKLSAgICAgICAg
cmV0dXJuIG1hdGNoX3Jlc3VsdC5udW1fbWF0Y2hlcwotCi0gICAgZGVmIF9jaGVja19zeW50YXgo
c2VsZiwgbWF0Y2hlciwgb3B0aW9ucywgbGluZW5vLCB0ZXN0X2xpc3RfcGF0aCk6Ci0gICAgICAg
IG1hdGNoX3Jlc3VsdCA9IG1hdGNoZXIubWF0Y2gob3B0aW9ucykKLSAgICAgICAgZm9yIGVycm9y
IGluIG1hdGNoX3Jlc3VsdC5lcnJvcnM6Ci0gICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGlu
ZW5vLCBlcnJvciwgdGVzdF9saXN0X3BhdGgpCi0gICAgICAgIGZvciB3YXJuaW5nIGluIG1hdGNo
X3Jlc3VsdC53YXJuaW5nczoKLSAgICAgICAgICAgIHNlbGYuX2xvZ19ub25fZmF0YWxfZXJyb3Io
bGluZW5vLCB3YXJuaW5nLCB0ZXN0X2xpc3RfcGF0aCkKLSAgICAgICAgcmV0dXJuIG1hdGNoX3Jl
c3VsdAotCi0gICAgZGVmIF9jaGVja19zZW1hbnRpY3Moc2VsZiwgb3B0aW9ucywgbGluZW5vLCB0
ZXN0X2xpc3RfcGF0aCk6Ci0gICAgICAgIGhhc193b250Zml4ID0gJ3dvbnRmaXgnIGluIG9wdGlv
bnMKLSAgICAgICAgaGFzX2J1ZyA9IEZhbHNlCi0gICAgICAgIGZvciBvcHQgaW4gb3B0aW9uczoK
LSAgICAgICAgICAgIGlmIG9wdC5zdGFydHN3aXRoKCdidWcnKToKLSAgICAgICAgICAgICAgICBo
YXNfYnVnID0gVHJ1ZQotICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKCdidWdcZCsnLCBvcHQp
OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLAotICAgICAgICAg
ICAgICAgICAgICAgICAgJ0JVR1xkKyBpcyBub3QgYWxsb3dlZCwgbXVzdCBiZSBvbmUgb2YgJwot
ICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR0NSXGQrLCBCVUdXS1xkKywgQlVHVjhfXGQrLCAn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAnb3IgYSBub24tbnVtZXJpYyBidWcgaWRlbnRpZmll
ci4nLCB0ZXN0X2xpc3RfcGF0aCkKLQotICAgICAgICBpZiBub3QgaGFzX2J1ZyBhbmQgbm90IGhh
c193b250Zml4OgotICAgICAgICAgICAgc2VsZi5fbG9nX25vbl9mYXRhbF9lcnJvcihsaW5lbm8s
ICdUZXN0IGxhY2tzIEJVRyBtb2RpZmllci4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKLQotICAgICAgICBpZiBzZWxmLl9pc19saW50X21v
ZGUgYW5kICdyZWJhc2VsaW5lJyBpbiBvcHRpb25zOgotICAgICAgICAgICAgc2VsZi5fYWRkX2Vy
cm9yKGxpbmVubywKLSAgICAgICAgICAgICAgICAnUkVCQVNFTElORSBzaG91bGQgb25seSBiZSB1
c2VkIGZvciBydW5uaW5nIHJlYmFzZWxpbmUucHkuICcKLSAgICAgICAgICAgICAgICAnQ2Fubm90
IGJlIGNoZWNrZWQgaW4uJywgdGVzdF9saXN0X3BhdGgpCi0KLSAgICBkZWYgX2NoZWNrX29wdGlv
bnNfYWdhaW5zdF9leHBlY3RhdGlvbnMoc2VsZiwgb3B0aW9ucywgZXhwZWN0YXRpb25zLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sIHRlc3RfbGlz
dF9wYXRoKToKLSAgICAgICAgaWYgJ3Nsb3cnIGluIG9wdGlvbnMgYW5kIFRJTUVPVVQgaW4gZXhw
ZWN0YXRpb25zOgotICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywKLSAgICAgICAg
ICAgICAgICAnQSB0ZXN0IGNhbiBub3QgYmUgYm90aCBTTE9XIGFuZCBUSU1FT1VULiBJZiBpdCB0
aW1lcyBvdXQgJwotICAgICAgICAgICAgICAgICdpbmRlZmluaXRlbHksIHRoZW4gaXQgc2hvdWxk
IGJlIGp1c3QgVElNRU9VVC4nLCB0ZXN0X2xpc3RfcGF0aCkKLQotICAgIGRlZiBfY2hlY2tfcGF0
aF9kb2VzX25vdF9leGlzdChzZWxmLCBsaW5lbm8sIHRlc3RfbGlzdF9wYXRoKToKLSAgICAgICAg
IyBXZWJLaXQncyB3YXkgb2Ygc2tpcHBpbmcgdGVzdHMgaXMgdG8gYWRkIGEgLWRpc2FibGVkIHN1
ZmZpeC4KLSAgICAgICAgICAgICMgU28gd2Ugc2hvdWxkIGNvbnNpZGVyIHRoZSBwYXRoIGV4aXN0
aW5nIGlmIHRoZSBwYXRoIG9yIHRoZQotICAgICAgICAjIC1kaXNhYmxlZCB2ZXJzaW9uIGV4aXN0
cy4KLSAgICAgICAgaWYgKG5vdCBzZWxmLl9wb3J0LnRlc3RfZXhpc3RzKHRlc3RfbGlzdF9wYXRo
KQotICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl9wb3J0LnRlc3RfZXhpc3RzKHRlc3RfbGlzdF9w
YXRoICsgJy1kaXNhYmxlZCcpKToKLSAgICAgICAgICAgICMgTG9nIGEgbm9uIGZhdGFsIGVycm9y
IGhlcmUgc2luY2UgeW91IGhpdCB0aGlzIGNhc2UgYW55Ci0gICAgICAgICAgICAjIHRpbWUgeW91
IHVwZGF0ZSB0ZXN0X2V4cGVjdGF0aW9ucy50eHQgd2l0aG91dCBzeW5jaW5nCi0gICAgICAgICAg
ICAjIHRoZSBMYXlvdXRUZXN0cyBkaXJlY3RvcnkKLSAgICAgICAgICAgIHNlbGYuX2xvZ19ub25f
ZmF0YWxfZXJyb3IobGluZW5vLCAnUGF0aCBkb2VzIG5vdCBleGlzdC4nLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKLSAgICAgICAgICAgIHJl
dHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIF9leHBhbmRfdGVzdHMo
c2VsZiwgdGVzdF9saXN0X3BhdGgpOgotICAgICAgICAiIiJDb252ZXJ0IHRoZSB0ZXN0IHNwZWNp
ZmljYXRpb24gdG8gYW4gYWJzb2x1dGUsIG5vcm1hbGl6ZWQKLSAgICAgICAgcGF0aCBhbmQgbWFr
ZSBzdXJlIGRpcmVjdG9yaWVzIGVuZCB3aXRoIHRoZSBPUyBwYXRoIHNlcGFyYXRvci4iIiIKLSAg
ICAgICAgIyBGSVhNRTogZnVsbF90ZXN0X2xpc3QgY2FuIHF1aWNrbHkgY29udGFpbiBhIGJpZyBh
bW91bnQgb2YKLSAgICAgICAgIyBlbGVtZW50cy4gV2Ugc2hvdWxkIGNvbnNpZGVyIGF0IHNvbWUg
cG9pbnQgdG8gdXNlIGEgbW9yZQotICAgICAgICAjIGVmZmljaWVudCBzdHJ1Y3R1cmUgaW5zdGVh
ZCBvZiBhIGxpc3QuIE1heWJlIGEgZGljdGlvbmFyeSBvZgotICAgICAgICAjIGxpc3RzIHRvIHJl
cHJlc2VudCB0aGUgdHJlZSBvZiB0ZXN0cywgbGVhdmVzIGJlaW5nIHRlc3QKLSAgICAgICAgIyBm
aWxlcyBhbmQgbm9kZXMgYmVpbmcgY2F0ZWdvcmllcy4KLQotICAgICAgICBpZiBzZWxmLl9wb3J0
LnRlc3RfaXNkaXIodGVzdF9saXN0X3BhdGgpOgotICAgICAgICAgICAgIyB0aGlzIGlzIGEgdGVz
dCBjYXRlZ29yeSwgcmV0dXJuIGFsbCB0aGUgdGVzdHMgb2YgdGhlIGNhdGVnb3J5LgotICAgICAg
ICAgICAgdGVzdF9saXN0X3BhdGggPSBzZWxmLl9wb3J0Lm5vcm1hbGl6ZV90ZXN0X25hbWUodGVz
dF9saXN0X3BhdGgpCi0KLSAgICAgICAgICAgIHJldHVybiBbdGVzdCBmb3IgdGVzdCBpbiBzZWxm
Ll9mdWxsX3Rlc3RfbGlzdCBpZiB0ZXN0LnN0YXJ0c3dpdGgodGVzdF9saXN0X3BhdGgpXQotCi0g
ICAgICAgICMgdGhpcyBpcyBhIHRlc3QgZmlsZSwgZG8gYSBxdWljayBjaGVjayBpZiBpdCdzIGlu
IHRoZQotICAgICAgICAjIGZ1bGwgdGVzdCBzdWl0ZS4KLSAgICAgICAgcmVzdWx0ID0gW10KLSAg
ICAgICAgaWYgdGVzdF9saXN0X3BhdGggaW4gc2VsZi5fZnVsbF90ZXN0X2xpc3Q6Ci0gICAgICAg
ICAgICByZXN1bHQgPSBbdGVzdF9saXN0X3BhdGgsIF0KLSAgICAgICAgcmV0dXJuIHJlc3VsdAot
Ci0gICAgZGVmIF9hZGRfdGVzdHMoc2VsZiwgdGVzdHMsIGV4cGVjdGF0aW9ucywgdGVzdF9saXN0
X3BhdGgsIGxpbmVubywKLSAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMsIG51bV9tYXRjaGVz
LCBvcHRpb25zLCBvdmVycmlkZXNfYWxsb3dlZCk6Ci0gICAgICAgIGZvciB0ZXN0IGluIHRlc3Rz
OgotICAgICAgICAgICAgaWYgc2VsZi5fYWxyZWFkeV9zZWVuX2JldHRlcl9tYXRjaCh0ZXN0LCB0
ZXN0X2xpc3RfcGF0aCwgbnVtX21hdGNoZXMsIGxpbmVubywgb3ZlcnJpZGVzX2FsbG93ZWQpOgot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIHNlbGYuX2NsZWFyX2V4cGVj
dGF0aW9uc19mb3JfdGVzdCh0ZXN0LCB0ZXN0X2xpc3RfcGF0aCkKLSAgICAgICAgICAgIHNlbGYu
X3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XSA9IChzZWxmLl9wb3J0Lm5vcm1hbGl6ZV90ZXN0X25hbWUo
dGVzdF9saXN0X3BhdGgpLCBudW1fbWF0Y2hlcywgbGluZW5vKQotICAgICAgICAgICAgc2VsZi5f
YWRkX3Rlc3QodGVzdCwgbW9kaWZpZXJzLCBleHBlY3RhdGlvbnMsIG9wdGlvbnMsIG92ZXJyaWRl
c19hbGxvd2VkKQotCi0gICAgZGVmIF9hZGRfdGVzdChzZWxmLCB0ZXN0LCBtb2RpZmllcnMsIGV4
cGVjdGF0aW9ucywgb3B0aW9ucywgb3ZlcnJpZGVzX2FsbG93ZWQpOgotICAgICAgICAiIiJTZXRz
IHRoZSBleHBlY3RlZCBzdGF0ZSBmb3IgYSBnaXZlbiB0ZXN0LgotCi0gICAgICAgIFRoaXMgcm91
dGluZSBhc3N1bWVzIHRoZSB0ZXN0IGhhcyBub3QgYmVlbiBhZGRlZCBiZWZvcmUuIElmIGl0IGhh
cywKLSAgICAgICAgdXNlIF9jbGVhcl9leHBlY3RhdGlvbnNfZm9yX3Rlc3QoKSB0byByZXNldCB0
aGUgc3RhdGUgcHJpb3IgdG8KLSAgICAgICAgY2FsbGluZyB0aGlzLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgdGVzdDogdGVzdCB0byBhZGQKLSAgICAgICAgICBtb2RpZmllcnM6IHNlcXVl
bmNlIG9mIG1vZGlmaWVyIGtleXdvcmRzICgnd29udGZpeCcsICdzbG93JywgZXRjLikKLSAgICAg
ICAgICBleHBlY3RhdGlvbnM6IHNlcXVlbmNlIG9mIGV4cGVjdGF0aW9ucyAoUEFTUywgSU1BR0Us
IGV0Yy4pCi0gICAgICAgICAgb3B0aW9uczogc2VxdWVuY2Ugb2Yga2V5d29yZHMgYW5kIGJ1ZyBp
ZGVudGlmaWVycy4KLSAgICAgICAgICBvdmVycmlkZXNfYWxsb3dlZDogd2hldGhlciB3ZSdyZSBw
YXJzaW5nIHRoZSByZWd1bGFyIGV4cGVjdGF0aW9ucwotICAgICAgICAgICAgICBvciB0aGUgb3Zl
cnJpZGRpbmcgZXhwZWN0YXRpb25zIiIiCi0gICAgICAgIHNlbGYuX3Rlc3RfdG9fZXhwZWN0YXRp
b25zW3Rlc3RdID0gZXhwZWN0YXRpb25zCi0gICAgICAgIGZvciBleHBlY3RhdGlvbiBpbiBleHBl
Y3RhdGlvbnM6Ci0gICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbl90b190ZXN0c1tleHBlY3Rh
dGlvbl0uYWRkKHRlc3QpCi0KLSAgICAgICAgc2VsZi5fdGVzdF90b19vcHRpb25zW3Rlc3RdID0g
b3B0aW9ucwotICAgICAgICBzZWxmLl90ZXN0X3RvX21vZGlmaWVyc1t0ZXN0XSA9IHNldCgpCi0g
ICAgICAgIGZvciBtb2RpZmllciBpbiBtb2RpZmllcnM6Ci0gICAgICAgICAgICBtb2RfdmFsdWUg
PSBzZWxmLk1PRElGSUVSU1ttb2RpZmllcl0KLSAgICAgICAgICAgIHNlbGYuX21vZGlmaWVyX3Rv
X3Rlc3RzW21vZF92YWx1ZV0uYWRkKHRlc3QpCi0gICAgICAgICAgICBzZWxmLl90ZXN0X3RvX21v
ZGlmaWVyc1t0ZXN0XS5hZGQobW9kX3ZhbHVlKQotCi0gICAgICAgIGlmICd3b250Zml4JyBpbiBt
b2RpZmllcnM6Ci0gICAgICAgICAgICBzZWxmLl90aW1lbGluZV90b190ZXN0c1tXT05URklYXS5h
ZGQodGVzdCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3RpbWVsaW5lX3RvX3Rl
c3RzW05PV10uYWRkKHRlc3QpCi0KLSAgICAgICAgaWYgJ3NraXAnIGluIG1vZGlmaWVyczoKLSAg
ICAgICAgICAgIHNlbGYuX3Jlc3VsdF90eXBlX3RvX3Rlc3RzW1NLSVBdLmFkZCh0ZXN0KQotICAg
ICAgICBlbGlmIGV4cGVjdGF0aW9ucyA9PSBzZXQoW1BBU1NdKToKLSAgICAgICAgICAgIHNlbGYu
X3Jlc3VsdF90eXBlX3RvX3Rlc3RzW1BBU1NdLmFkZCh0ZXN0KQotICAgICAgICBlbGlmIGxlbihl
eHBlY3RhdGlvbnMpID4gMToKLSAgICAgICAgICAgIHNlbGYuX3Jlc3VsdF90eXBlX3RvX3Rlc3Rz
W0ZMQUtZXS5hZGQodGVzdCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3Jlc3Vs
dF90eXBlX3RvX3Rlc3RzW0ZBSUxdLmFkZCh0ZXN0KQotCi0gICAgICAgIGlmIG92ZXJyaWRlc19h
bGxvd2VkOgotICAgICAgICAgICAgc2VsZi5fb3ZlcnJpZGRpbmdfdGVzdHMuYWRkKHRlc3QpCi0K
LSAgICBkZWYgX2NsZWFyX2V4cGVjdGF0aW9uc19mb3JfdGVzdChzZWxmLCB0ZXN0LCB0ZXN0X2xp
c3RfcGF0aCk6Ci0gICAgICAgICIiIlJlbW92ZSBwcmV4aXN0aW5nIGV4cGVjdGF0aW9ucyBmb3Ig
dGhpcyB0ZXN0LgotICAgICAgICBUaGlzIGhhcHBlbnMgaWYgd2UgYXJlIHNlZWluZyBhIG1vcmUg
cHJlY2lzZSBwYXRoCi0gICAgICAgIHRoYW4gYSBwcmV2aW91cyBsaXN0aW5nLgotICAgICAgICAi
IiIKLSAgICAgICAgaWYgdGVzdCBpbiBzZWxmLl90ZXN0X2xpc3RfcGF0aHM6Ci0gICAgICAgICAg
ICBzZWxmLl90ZXN0X3RvX2V4cGVjdGF0aW9ucy5wb3AodGVzdCwgJycpCi0gICAgICAgICAgICBz
ZWxmLl9yZW1vdmVfZnJvbV9zZXRzKHRlc3QsIHNlbGYuX2V4cGVjdGF0aW9uX3RvX3Rlc3RzKQot
ICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2Zyb21fc2V0cyh0ZXN0LCBzZWxmLl9tb2RpZmllcl90
b190ZXN0cykKLSAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9tX3NldHModGVzdCwgc2VsZi5f
dGltZWxpbmVfdG9fdGVzdHMpCi0gICAgICAgICAgICBzZWxmLl9yZW1vdmVfZnJvbV9zZXRzKHRl
c3QsIHNlbGYuX3Jlc3VsdF90eXBlX3RvX3Rlc3RzKQotCi0gICAgICAgIHNlbGYuX3Rlc3RfbGlz
dF9wYXRoc1t0ZXN0XSA9IHNlbGYuX3BvcnQubm9ybWFsaXplX3Rlc3RfbmFtZSh0ZXN0X2xpc3Rf
cGF0aCkKLQotICAgIGRlZiBfcmVtb3ZlX2Zyb21fc2V0cyhzZWxmLCB0ZXN0LCBkaWN0KToKLSAg
ICAgICAgIiIiUmVtb3ZlcyB0aGUgZ2l2ZW4gdGVzdCBmcm9tIHRoZSBzZXRzIGluIHRoZSBkaWN0
aW9uYXJ5LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdGVzdDogdGVzdCB0byBsb29rIGZv
cgotICAgICAgICAgIGRpY3Q6IGRpY3Qgb2Ygc2V0cyBvZiBmaWxlcyIiIgotICAgICAgICBmb3Ig
c2V0X29mX3Rlc3RzIGluIGRpY3QuaXRlcnZhbHVlcygpOgotICAgICAgICAgICAgaWYgdGVzdCBp
biBzZXRfb2ZfdGVzdHM6Ci0gICAgICAgICAgICAgICAgc2V0X29mX3Rlc3RzLnJlbW92ZSh0ZXN0
KQotCi0gICAgZGVmIF9hbHJlYWR5X3NlZW5fYmV0dGVyX21hdGNoKHNlbGYsIHRlc3QsIHRlc3Rf
bGlzdF9wYXRoLCBudW1fbWF0Y2hlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGluZW5vLCBvdmVycmlkZXNfYWxsb3dlZCk6Ci0gICAgICAgICIiIlJldHVybnMgd2hldGhl
ciB3ZSd2ZSBzZWVuIGEgYmV0dGVyIG1hdGNoIGFscmVhZHkgaW4gdGhlIGZpbGUuCi0KLSAgICAg
ICAgUmV0dXJucyBUcnVlIGlmIHdlJ3ZlIGFscmVhZHkgc2VlbiBhIHRlc3RfbGlzdF9wYXRoIHRo
YXQgbWF0Y2hlcyBtb3JlIG9mIHRoZSB0ZXN0Ci0gICAgICAgICAgICB0aGFuIHRoaXMgcGF0aCBk
b2VzCi0gICAgICAgICIiIgotICAgICAgICAjIEZJWE1FOiBTZWUgY29tbWVudCBiZWxvdyBhYm91
dCBtYXRjaGluZyB0ZXN0IGNvbmZpZ3MgYW5kIG51bV9tYXRjaGVzLgotICAgICAgICBpZiBub3Qg
dGVzdCBpbiBzZWxmLl90ZXN0X2xpc3RfcGF0aHM6Ci0gICAgICAgICAgICAjIFdlJ3ZlIG5ldmVy
IHNlZW4gdGhpcyB0ZXN0IGJlZm9yZS4KLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAg
ICAgIHByZXZfYmFzZV9wYXRoLCBwcmV2X251bV9tYXRjaGVzLCBwcmV2X2xpbmVubyA9IHNlbGYu
X3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XQotICAgICAgICBiYXNlX3BhdGggPSBzZWxmLl9wb3J0Lm5v
cm1hbGl6ZV90ZXN0X25hbWUodGVzdF9saXN0X3BhdGgpCi0KLSAgICAgICAgaWYgbGVuKHByZXZf
YmFzZV9wYXRoKSA+IGxlbihiYXNlX3BhdGgpOgotICAgICAgICAgICAgIyBUaGUgcHJldmlvdXMg
cGF0aCBtYXRjaGVkIG1vcmUgb2YgdGhlIHRlc3QuCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQot
Ci0gICAgICAgIGlmIGxlbihwcmV2X2Jhc2VfcGF0aCkgPCBsZW4oYmFzZV9wYXRoKToKLSAgICAg
ICAgICAgICMgVGhpcyBwYXRoIG1hdGNoZXMgbW9yZSBvZiB0aGUgdGVzdC4KLSAgICAgICAgICAg
IHJldHVybiBGYWxzZQotCi0gICAgICAgIGlmIG92ZXJyaWRlc19hbGxvd2VkIGFuZCB0ZXN0IG5v
dCBpbiBzZWxmLl9vdmVycmlkZGluZ190ZXN0czoKLSAgICAgICAgICAgICMgV2UgaGF2ZSBzZWVu
IHRoaXMgcGF0aCwgYnV0IHRoYXQncyBva2F5IGJlY2F1c2UgaXQgaXMKLSAgICAgICAgICAgICMg
aW4gdGhlIG92ZXJyaWRlcyBhbmQgdGhlIGVhcmxpZXIgcGF0aCB3YXMgaW4gdGhlCi0gICAgICAg
ICAgICAjIGV4cGVjdGF0aW9ucyAobm90IHRoZSBvdmVycmlkZXMpLgotICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCi0KLSAgICAgICAgIyBBdCB0aGlzIHBvaW50IHdlIGtub3cgd2UgaGF2ZSBzZWVu
IGEgcHJldmlvdXMgZXhhY3QgbWF0Y2ggb24gdGhpcwotICAgICAgICAjIGJhc2UgcGF0aCwgc28g
d2UgbmVlZCB0byBjaGVjayB0aGUgdHdvIHNldHMgb2YgbW9kaWZpZXJzLgotCi0gICAgICAgIGlm
IG92ZXJyaWRlc19hbGxvd2VkOgotICAgICAgICAgICAgZXhwZWN0YXRpb25fc291cmNlID0gIm92
ZXJyaWRlIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZXhwZWN0YXRpb25fc291cmNlID0g
ImV4cGVjdGF0aW9uIgotCi0gICAgICAgICMgRklYTUU6IFRoaXMgY29kZSB3YXMgb3JpZ2luYWxs
eSBkZXNpZ25lZCB0byBhbGxvdyBsaW5lcyB0aGF0IG1hdGNoZWQKLSAgICAgICAgIyBtb3JlIG1v
ZGlmaWVycyB0byBvdmVycmlkZSBsaW5lcyB0aGF0IG1hdGNoZWQgZmV3ZXIgbW9kaWZpZXJzLgot
ICAgICAgICAjIEhvd2V2ZXIsIHdlIGN1cnJlbnRseSB2aWV3IHRoZXNlIGFzIGVycm9ycy4gSWYg
d2UgZGVjaWRlIHRvIG1ha2UKLSAgICAgICAgIyB0aGlzIHBvbGljeSBwZXJtYW5lbnQsIHdlIGNh
biBwcm9iYWJseSBzaW1wbGlmeSB0aGlzIGNvZGUKLSAgICAgICAgIyBhbmQgdGhlIE1vZGlmaWVy
TWF0Y2hlciBjb2RlIGEgZmFpciBhbW91bnQuCi0gICAgICAgICMKLSAgICAgICAgIyBUbyB1c2Ug
dGhlICJtb3JlIG1vZGlmaWVycyB3aW5zIiBwb2xpY3ksIGNoYW5nZSB0aGUgIl9hZGRfZXJyb3Ii
IGxpbmVzIGZvciBvdmVycmlkZXMKLSAgICAgICAgIyB0byBfbG9nX25vbl9mYXRhbF9lcnJvcigp
IGFuZCBjaGFuZ2UgdGhlIGNvbW1lbnRlZC1vdXQgInJldHVybiBGYWxzZSIuCi0KLSAgICAgICAg
aWYgcHJldl9udW1fbWF0Y2hlcyA9PSBudW1fbWF0Y2hlczoKLSAgICAgICAgICAgIHNlbGYuX2Fk
ZF9lcnJvcihsaW5lbm8sCi0gICAgICAgICAgICAgICAgJ0R1cGxpY2F0ZSBvciBhbWJpZ3VvdXMg
JXMuJyAlIGV4cGVjdGF0aW9uX3NvdXJjZSwKLSAgICAgICAgICAgICAgICB0ZXN0KQotICAgICAg
ICAgICAgcmV0dXJuIFRydWUKLQotICAgICAgICBpZiBwcmV2X251bV9tYXRjaGVzIDwgbnVtX21h
dGNoZXM6Ci0gICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLAotICAgICAgICAgICAg
ICAgICdNb3JlIHNwZWNpZmljIGVudHJ5IG9uIGxpbmUgJWQgb3ZlcnJpZGVzIGxpbmUgJWQnICUK
LSAgICAgICAgICAgICAgICAobGluZW5vLCBwcmV2X2xpbmVubyksIHRlc3RfbGlzdF9wYXRoKQot
ICAgICAgICAgICAgIyBGSVhNRTogcmV0dXJuIEZhbHNlIGlmIHdlIHdhbnQgbW9yZSBzcGVjaWZp
YyB0byB3aW4uCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgICAgIHNlbGYuX2FkZF9l
cnJvcihsaW5lbm8sCi0gICAgICAgICAgICAnTW9yZSBzcGVjaWZpYyBlbnRyeSBvbiBsaW5lICVk
IG92ZXJyaWRlcyBsaW5lICVkJyAlCi0gICAgICAgICAgICAocHJldl9saW5lbm8sIGxpbmVubyks
IHRlc3RfbGlzdF9wYXRoKQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIF9hZGRfZXJy
b3Ioc2VsZiwgbGluZW5vLCBtc2csIHBhdGgpOgotICAgICAgICAiIiJSZXBvcnRzIGFuIGVycm9y
IHRoYXQgd2lsbCBwcmV2ZW50IHJ1bm5pbmcgdGhlIHRlc3RzLiBEb2VzIG5vdAotICAgICAgICBp
bW1lZGlhdGVseSByYWlzZSBhbiBleGNlcHRpb24gYmVjYXVzZSB3ZSdkIGxpa2UgdG8gYWdncmVn
YXRlIGFsbCB0aGUKLSAgICAgICAgZXJyb3JzIHNvIHRoZXkgY2FuIGFsbCBiZSBwcmludGVkIG91
dC4iIiIKLSAgICAgICAgc2VsZi5fZXJyb3JzLmFwcGVuZCgnTGluZTolcyAlcyAlcycgJSAobGlu
ZW5vLCBtc2csIHBhdGgpKQotCi0gICAgZGVmIF9sb2dfbm9uX2ZhdGFsX2Vycm9yKHNlbGYsIGxp
bmVubywgbXNnLCBwYXRoKToKLSAgICAgICAgIiIiUmVwb3J0cyBhbiBlcnJvciB0aGF0IHdpbGwg
bm90IHByZXZlbnQgcnVubmluZyB0aGUgdGVzdHMuIFRoZXNlIGFyZQotICAgICAgICBzdGlsbCBl
cnJvcnMsIGJ1dCBub3QgYmFkIGVub3VnaCB0byB3YXJyYW50IGJyZWFraW5nIHRlc3QgcnVubmlu
Zy4iIiIKLSAgICAgICAgc2VsZi5fbm9uX2ZhdGFsX2Vycm9ycy5hcHBlbmQoJ0xpbmU6JXMgJXMg
JXMnICUgKGxpbmVubywgbXNnLCBwYXRoKSkKLQotCi1jbGFzcyBNb2RpZmllck1hdGNoUmVzdWx0
KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgotICAgICAgICBzZWxm
Lm51bV9tYXRjaGVzID0gTW9kaWZpZXJNYXRjaGVyLk5PX01BVENICi0gICAgICAgIHNlbGYub3B0
aW9ucyA9IG9wdGlvbnMKLSAgICAgICAgc2VsZi5lcnJvcnMgPSBbXQotICAgICAgICBzZWxmLndh
cm5pbmdzID0gW10KLSAgICAgICAgc2VsZi5tb2RpZmllcnMgPSBbXQotICAgICAgICBzZWxmLl9t
YXRjaGVkX3JlZ2V4ZXMgPSBzZXQoKQotICAgICAgICBzZWxmLl9tYXRjaGVkX21hY3JvcyA9IHNl
dCgpCi0KLQotY2xhc3MgTW9kaWZpZXJNYXRjaGVyKG9iamVjdCk6Ci0KLSAgICAiIiIKLSAgICBU
aGlzIGNsYXNzIG1hbmFnZXMgdGhlIGludGVycHJldGF0aW9uIG9mIHRoZSAibW9kaWZpZXJzIiBm
b3IgYSBnaXZlbgotICAgIGxpbmUgaW4gdGhlIGV4cGVjdGF0aW9ucyBmaWxlLiBNb2RpZmllcnMg
YXJlIHRoZSB0b2tlbnMgdGhhdCBhcHBlYXIgdG8gdGhlCi0gICAgbGVmdCBvZiB0aGUgY29sb24g
b24gYSBsaW5lLiBGb3IgZXhhbXBsZSwgIkJVRzEyMzQiLCAiREVCVUciLCBhbmQgIldJTiIgYXJl
Ci0gICAgYWxsIG1vZGlmaWVycy4gVGhpcyBjbGFzcyBnZXRzIHdoYXQgdGhlIHZhbGlkIG1vZGlm
aWVycyBhcmUsIGFuZCB3aGljaAotICAgIG1vZGlmaWVycyBhcmUgYWxsb3dlZCB0byBleGlzdCB0
b2dldGhlciBvbiBhIGxpbmUsIGZyb20gdGhlCi0gICAgVGVzdENvbmZpZ3VyYXRpb24gb2JqZWN0
IHRoYXQgaXMgcGFzc2VkIGluIHRvIHRoZSBjYWxsLgotCi0gICAgVGhpcyBjbGFzcyBkZXRlY3Rz
ICppbnRyYSotbGluZSBlcnJvcnMgbGlrZSB1bmtub3duIG1vZGlmaWVycywgYnV0Ci0gICAgZG9l
cyBub3QgZGV0ZWN0ICppbnRlciotbGluZSBtb2RpZmllcnMgbGlrZSBkdXBsaWNhdGUgZXhwZWN0
YXRpb25zLgotCi0gICAgTW9yZSBpbXBvcnRhbnRseSwgdGhpcyBjbGFzcyBpcyBhbHNvIHVzZWQg
dG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4gbGluZQotICAgIG1hdGNoZXMgdGhlIHBvcnQgaW4gcXVl
c3Rpb24uIE1hdGNoZXMgYXJlIHJhbmtlZCBhY2NvcmRpbmcgdG8gdGhlIG51bWJlcgotICAgIG9m
IG1vZGlmaWVycyB0aGF0IG1hdGNoIG9uIGEgbGluZS4gQSBsaW5lIHdpdGggbm8gbW9kaWZpZXJz
IG1hdGNoZXMKLSAgICBldmVyeXRoaW5nIGFuZCBoYXMgYSBzY29yZSBvZiB6ZXJvLiBBIGxpbmUg
d2l0aCBvbmUgbW9kaWZpZXIgbWF0Y2hlcyBvbmx5Ci0gICAgcG9ydHMgdGhhdCBoYXZlIHRoYXQg
bW9kaWZpZXIgYW5kIGdldHMgYSBzY29yZSBvZiAxLCBhbmQgc28gb25lLiBQb3J0cwotICAgIHRo
YXQgZG9uJ3QgbWF0Y2ggYXQgYWxsIGdldCBhIHNjb3JlIG9mIC0xLgotCi0gICAgR2l2ZW4gdHdv
IGxpbmVzIGluIGEgZmlsZSB0aGF0IGFwcGx5IHRvIHRoZSBzYW1lIHRlc3QsIGlmIGJvdGggZXhw
ZWN0YXRpb25zCi0gICAgbWF0Y2ggdGhlIGN1cnJlbnQgY29uZmlnLCB0aGVuIHRoZSBleHBlY3Rh
dGlvbiBpcyBjb25zaWRlcmVkIGFtYmlndW91cywKLSAgICBldmVuIGlmIG9uZSBleHBlY3RhdGlv
biBtYXRjaGVzIG1vcmUgb2YgdGhlIGNvbmZpZyB0aGFuIHRoZSBvdGhlci4gRm9yCi0gICAgZXhh
bXBsZSwgaW46Ci0KLSAgICBCVUcxIFJFTEVBU0UgOiBmb28uaHRtbCA9IEZBSUwKLSAgICBCVUcx
IFdJTiBSRUxFQVNFIDogZm9vLmh0bWwgPSBQQVNTCi0gICAgQlVHMiBXSU4gOiBiYXIuaHRtbCA9
IEZBSUwKLSAgICBCVUcyIERFQlVHIDogYmFyLmh0bWwgPSBQQVNTCi0KLSAgICBsaW5lcyAxIGFu
ZCAyIHdvdWxkIHByb2R1Y2UgYW4gZXJyb3Igb24gYSBXaW4gWFAgUmVsZWFzZSBib3QgKHRoZSBz
Y29yZXMKLSAgICB3b3VsZCBiZSAxIGFuZCAyLCByZXNwZWN0aXZlbHkpLCBhbmQgbGluZXMgdGhy
ZWUgYW5kIGZvdXIgd291bGQgcHJvZHVjZQotICAgIGEgZHVwbGljYXRlIGV4cGVjdGF0aW9uIG9u
IGEgV2luIERlYnVnIGJvdCBzaW5jZSBib3RoIHRoZSAnd2luJyBhbmQgdGhlCi0gICAgJ2RlYnVn
JyBleHBlY3RhdGlvbnMgd291bGQgYXBwbHkgKGJvdGggaGFkIHNjb3JlcyBvZiAxKS4KLQotICAg
IEluIGFkZGl0aW9uIHRvIHRoZSBkZWZpbml0aW9ucyBvZiBhbGwgb2YgdGhlIG1vZGlmaWVycywg
dGhlIGNsYXNzCi0gICAgc3VwcG9ydHMgIm1hY3JvcyIgdGhhdCBhcmUgZXhwYW5kZWQgcHJpb3Ig
dG8gaW50ZXJwcmV0YXRpb24sIGFuZCAiaWdub3JlCi0gICAgcmVnZXhlcyIgdGhhdCBjYW4gYmUg
dXNlZCB0byBza2lwIG92ZXIgbW9kaWZpZXJzIGxpa2UgdGhlIEJVRyogbW9kaWZpZXJzLgotICAg
ICIiIgotICAgIE1BQ1JPUyA9IHsKLSAgICAgICAgJ21hYyc6IFsnbGVvcGFyZCcsICdzbm93bGVv
cGFyZCddLAotICAgICAgICAnd2luJzogWyd4cCcsICd2aXN0YScsICd3aW43J10sCi0gICAgICAg
ICdsaW51eCc6IFsnbHVjaWQnXSwKLSAgICB9Ci0KLSAgICAjIFdlIGRvbid0IGluY2x1ZGUgdGhl
ICJub25lIiBtb2RpZmllciBiZWNhdXNlIGl0IGlzbid0IGFjdHVhbGx5IGxlZ2FsLgotICAgIFJF
R0VYRVNfVE9fSUdOT1JFID0gKFsnYnVnXHcrJ10gKwotICAgICAgICAgICAgICAgICAgICAgICAg
IFRlc3RFeHBlY3RhdGlvbnMuTU9ESUZJRVJTLmtleXMoKVs6LTFdKQotICAgIERVUExJQ0FURV9S
RUdFWEVTX0FMTE9XRUQgPSBbJ2J1Z1x3KyddCi0KLSAgICAjIE1hZ2ljIHZhbHVlIHJldHVybmVk
IHdoZW4gdGhlIG9wdGlvbnMgZG9uJ3QgbWF0Y2guCi0gICAgTk9fTUFUQ0ggPSAtMQotCi0gICAg
IyBGSVhNRTogVGhlIGNvZGUgY3VycmVudGx5IGRvZXNuJ3QgZGV0ZWN0IGNvbWJpbmF0aW9ucyBv
ZiBtb2RpZmllcnMKLSAgICAjIHRoYXQgYXJlIHN5bnRhY3RpY2FsbHkgdmFsaWQgYnV0IHNlbWFu
dGljYWxseSBpbnZhbGlkLCBsaWtlCi0gICAgIyAnTUFDIFhQJy4gU2VlIE1vZGlmaWVyTWF0Y2hU
ZXN0LnRlc3RfaW52YWxpZF9jb21iaW5hdGlvbnMoKSBpbiB0aGUKLSAgICAjIF91bml0dGVzdC5w
eSBmaWxlLgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfY29uZmlnKToKLSAgICAgICAg
IiIiSW5pdGlhbGl6ZSBhIE1vZGlmaWVyTWF0Y2hlciBhcmd1bWVudCB3aXRoIHRoZSBUZXN0Q29u
ZmlndXJhdGlvbiBpdAotICAgICAgICBzaG91bGQgYmUgbWF0Y2hlZCBhZ2FpbnN0LiIiIgotICAg
ICAgICBzZWxmLnRlc3RfY29uZmlnID0gdGVzdF9jb25maWcKLSAgICAgICAgc2VsZi5hbGxvd2Vk
X2NvbmZpZ3VyYXRpb25zID0gdGVzdF9jb25maWcuYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoKQot
ICAgICAgICBzZWxmLm1hY3JvcyA9IHNlbGYuTUFDUk9TCi0KLSAgICAgICAgc2VsZi5yZWdleGVz
X3RvX2lnbm9yZSA9IHt9Ci0gICAgICAgIGZvciByZWdleF9zdHIgaW4gc2VsZi5SRUdFWEVTX1RP
X0lHTk9SRToKLSAgICAgICAgICAgIHNlbGYucmVnZXhlc190b19pZ25vcmVbcmVnZXhfc3RyXSA9
IHJlLmNvbXBpbGUocmVnZXhfc3RyKQotCi0gICAgICAgICMgS2VlcCBhIHNldCBvZiBhbGwgb2Yg
dGhlIGxlZ2FsIG1vZGlmaWVycyBmb3IgcXVpY2sgY2hlY2tpbmcuCi0gICAgICAgIHNlbGYuX2Fs
bF9tb2RpZmllcnMgPSBzZXQoKQotCi0gICAgICAgICMgS2VlcCBhIGRpY3QgbWFwcGluZyB2YWx1
ZXMgYmFjayB0byB0aGVpciBjYXRlZ29yaWVzLgotICAgICAgICBzZWxmLl9jYXRlZ29yaWVzX2Zv
cl9tb2RpZmllcnMgPSB7fQotICAgICAgICBmb3IgY29uZmlnIGluIHNlbGYuYWxsb3dlZF9jb25m
aWd1cmF0aW9uczoKLSAgICAgICAgICAgIGZvciBjYXRlZ29yeSwgbW9kaWZpZXIgaW4gY29uZmln
Lml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY2F0ZWdvcmllc19mb3JfbW9kaWZpZXJz
W21vZGlmaWVyXSA9IGNhdGVnb3J5Ci0gICAgICAgICAgICAgICAgc2VsZi5fYWxsX21vZGlmaWVy
cy5hZGQobW9kaWZpZXIpCi0KLSAgICBkZWYgbWF0Y2goc2VsZiwgb3B0aW9ucyk6Ci0gICAgICAg
ICIiIkNoZWNrcyBhIGxpc3Qgb2Ygb3B0aW9ucyBhZ2FpbnN0IHRoZSBjb25maWcgc2V0IGluIHRo
ZSBjb25zdHJ1Y3Rvci4KLSAgICAgICAgT3B0aW9ucyBtYXkgYmUgZWl0aGVyIGFjdHVhbCBtb2Rp
ZmllciBzdHJpbmdzLCAibWFjcm8iIHN0cmluZ3MKLSAgICAgICAgdGhhdCBnZXQgZXhwYW5kZWQg
dG8gYSBsaXN0IG9mIG1vZGlmaWVycywgb3Igc3RyaW5ncyB0aGF0IGFyZSBhbGxvd2VkCi0gICAg
ICAgIHRvIGJlIGlnbm9yZWQuIEFsbCBvZiB0aGUgb3B0aW9ucyBtdXN0IGJlIHBhc3NlZCBpbiBp
biBsb3dlciBjYXNlLgotCi0gICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBtYXRjaGluZyBj
YXRlZ29yaWVzLCBvciBOT19NQVRDSCAoLTEpIGlmIGl0Ci0gICAgICAgIGRvZXNuJ3QgbWF0Y2gg
b3IgdGhlcmUgd2VyZSBlcnJvcnMgZm91bmQuIE1hdGNoZXMgYXJlIHByaW9yaXRpemVkCi0gICAg
ICAgIGJ5IHRoZSBudW1iZXIgb2YgbWF0Y2hpbmcgY2F0ZWdvcmllcywgYmVjYXVzZSB0aGUgbW9y
ZSBzcGVjaWZpYwotICAgICAgICB0aGUgb3B0aW9ucyBsaXN0LCB0aGUgbW9yZSBjYXRlZ29yaWVz
IHdpbGwgbWF0Y2guCi0KLSAgICAgICAgVGhlIHJlc3VsdHMgb2YgdGhlIG1vc3QgcmVjZW50IG1h
dGNoIGFyZSBhdmFpbGFibGUgaW4gdGhlICdvcHRpb25zJywKLSAgICAgICAgJ21vZGlmaWVycycs
ICdudW1fbWF0Y2hlcycsICdlcnJvcnMnLCBhbmQgJ3dhcm5pbmdzJyBwcm9wZXJ0aWVzLgotICAg
ICAgICAiIiIKLSAgICAgICAgcmVzdWx0ID0gTW9kaWZpZXJNYXRjaFJlc3VsdChvcHRpb25zKQot
ICAgICAgICBzZWxmLl9wYXJzZShyZXN1bHQpCi0gICAgICAgIGlmIHJlc3VsdC5lcnJvcnM6Ci0g
ICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgICAgIHNlbGYuX2NvdW50X21hdGNoZXMocmVz
dWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgX3BhcnNlKHNlbGYsIHJlc3Vs
dCk6Ci0gICAgICAgICMgRklYTUU6IFNob3VsZCB3ZSB3YXJuIGFib3V0IGxpbmVzIGhhdmluZyBl
dmVyeSB2YWx1ZSBpbiBhIGNhdGVnb3J5PwotICAgICAgICBmb3Igb3B0aW9uIGluIHJlc3VsdC5v
cHRpb25zOgotICAgICAgICAgICAgc2VsZi5fcGFyc2Vfb25lKG9wdGlvbiwgcmVzdWx0KQotCi0g
ICAgZGVmIF9wYXJzZV9vbmUoc2VsZiwgb3B0aW9uLCByZXN1bHQpOgotICAgICAgICBpZiBvcHRp
b24gaW4gc2VsZi5fYWxsX21vZGlmaWVyczoKLSAgICAgICAgICAgIHNlbGYuX2FkZF9tb2RpZmll
cihvcHRpb24sIHJlc3VsdCkKLSAgICAgICAgZWxpZiBvcHRpb24gaW4gc2VsZi5tYWNyb3M6Ci0g
ICAgICAgICAgICBzZWxmLl9leHBhbmRfbWFjcm8ob3B0aW9uLCByZXN1bHQpCi0gICAgICAgIGVs
aWYgbm90IHNlbGYuX21hdGNoZXNfYW55X3JlZ2V4KG9wdGlvbiwgcmVzdWx0KToKLSAgICAgICAg
ICAgIHJlc3VsdC5lcnJvcnMuYXBwZW5kKCJVbnJlY29nbml6ZWQgb3B0aW9uICclcyciICUgb3B0
aW9uKQotCi0gICAgZGVmIF9hZGRfbW9kaWZpZXIoc2VsZiwgb3B0aW9uLCByZXN1bHQpOgotICAg
ICAgICBpZiBvcHRpb24gaW4gcmVzdWx0Lm1vZGlmaWVyczoKLSAgICAgICAgICAgIHJlc3VsdC5l
cnJvcnMuYXBwZW5kKCJNb3JlIHRoYW4gb25lICclcyciICUgb3B0aW9uKQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVycy5hcHBlbmQob3B0aW9uKQotCi0gICAgZGVm
IF9leHBhbmRfbWFjcm8oc2VsZiwgbWFjcm8sIHJlc3VsdCk6Ci0gICAgICAgIGlmIG1hY3JvIGlu
IHJlc3VsdC5fbWF0Y2hlZF9tYWNyb3M6Ci0gICAgICAgICAgICByZXN1bHQuZXJyb3JzLmFwcGVu
ZCgiTW9yZSB0aGFuIG9uZSAnJXMnIiAlIG1hY3JvKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAg
ICAgICAgbW9kcyA9IFtdCi0gICAgICAgIGZvciBtb2RpZmllciBpbiBzZWxmLm1hY3Jvc1ttYWNy
b106Ci0gICAgICAgICAgICBpZiBtb2RpZmllciBpbiByZXN1bHQub3B0aW9uczoKLSAgICAgICAg
ICAgICAgICByZXN1bHQuZXJyb3JzLmFwcGVuZCgiQ2FuJ3Qgc3BlY2lmeSBib3RoIG1vZGlmaWVy
ICclcycgYW5kICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWFjcm8g
JyVzJyIgJSAobW9kaWZpZXIsIG1hY3JvKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgbW9kcy5hcHBlbmQobW9kaWZpZXIpCi0gICAgICAgIHJlc3VsdC5fbWF0Y2hlZF9tYWNy
b3MuYWRkKG1hY3JvKQotICAgICAgICByZXN1bHQubW9kaWZpZXJzLmV4dGVuZChtb2RzKQotCi0g
ICAgZGVmIF9tYXRjaGVzX2FueV9yZWdleChzZWxmLCBvcHRpb24sIHJlc3VsdCk6Ci0gICAgICAg
IGZvciByZWdleF9zdHIsIHBhdHRlcm4gaW4gc2VsZi5yZWdleGVzX3RvX2lnbm9yZS5pdGVyaXRl
bXMoKToKLSAgICAgICAgICAgIGlmIHBhdHRlcm4ubWF0Y2gob3B0aW9uKToKLSAgICAgICAgICAg
ICAgICBzZWxmLl9oYW5kbGVfcmVnZXhfbWF0Y2gocmVnZXhfc3RyLCByZXN1bHQpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgX2hh
bmRsZV9yZWdleF9tYXRjaChzZWxmLCByZWdleF9zdHIsIHJlc3VsdCk6Ci0gICAgICAgIGlmIChy
ZWdleF9zdHIgaW4gcmVzdWx0Ll9tYXRjaGVkX3JlZ2V4ZXMgYW5kCi0gICAgICAgICAgICByZWdl
eF9zdHIgbm90IGluIHNlbGYuRFVQTElDQVRFX1JFR0VYRVNfQUxMT1dFRCk6Ci0gICAgICAgICAg
ICByZXN1bHQuZXJyb3JzLmFwcGVuZCgiTW9yZSB0aGFuIG9uZSBvcHRpb24gbWF0Y2hpbmcgJyVz
JyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXhfc3RyKQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgcmVzdWx0Ll9tYXRjaGVkX3JlZ2V4ZXMuYWRkKHJlZ2V4X3N0
cikKLQotICAgIGRlZiBfY291bnRfbWF0Y2hlcyhzZWxmLCByZXN1bHQpOgotICAgICAgICAiIiJS
ZXR1cm5zIHRoZSBudW1iZXIgb2YgbW9kaWZpZXJzIHRoYXQgbWF0Y2ggdGhlIHRlc3QgY29uZmln
LiIiIgotICAgICAgICBjYXRlZ29yaXplZF9tb2RpZmllcnMgPSBzZWxmLl9ncm91cF9ieV9jYXRl
Z29yeShyZXN1bHQubW9kaWZpZXJzKQotICAgICAgICByZXN1bHQubnVtX21hdGNoZXMgPSAwCi0g
ICAgICAgIGZvciBjYXRlZ29yeSwgbW9kaWZpZXIgaW4gc2VsZi50ZXN0X2NvbmZpZy5pdGVtcygp
OgotICAgICAgICAgICAgaWYgY2F0ZWdvcnkgaW4gY2F0ZWdvcml6ZWRfbW9kaWZpZXJzOgotICAg
ICAgICAgICAgICAgIGlmIG1vZGlmaWVyIGluIGNhdGVnb3JpemVkX21vZGlmaWVyc1tjYXRlZ29y
eV06Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5udW1fbWF0Y2hlcyArPSAxCi0gICAgICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm51bV9tYXRjaGVzID0g
c2VsZi5OT19NQVRDSAotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgIGRlZiBfZ3Jv
dXBfYnlfY2F0ZWdvcnkoc2VsZiwgbW9kaWZpZXJzKToKLSAgICAgICAgIyBSZXR1cm5zIGEgZGlj
dCBvZiBjYXRlZ29yeSBuYW1lIC0+IGxpc3Qgb2YgbW9kaWZpZXJzLgotICAgICAgICBtb2RpZmll
cnNfYnlfY2F0ZWdvcnkgPSB7fQotICAgICAgICBmb3IgbSBpbiBtb2RpZmllcnM6Ci0gICAgICAg
ICAgICBtb2RpZmllcnNfYnlfY2F0ZWdvcnkuc2V0ZGVmYXVsdChzZWxmLl9jYXRlZ29yeShtKSwg
W10pLmFwcGVuZChtKQotICAgICAgICByZXR1cm4gbW9kaWZpZXJzX2J5X2NhdGVnb3J5Ci0KLSAg
ICBkZWYgX2NhdGVnb3J5KHNlbGYsIG1vZGlmaWVyKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2Nh
dGVnb3JpZXNfZm9yX21vZGlmaWVyc1ttb2RpZmllcl0KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA5
MDUyOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ2
NyArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlVuaXQg
dGVzdHMgZm9yIHRlc3RfZXhwZWN0YXRpb25zLnB5LiIiIgotCi1pbXBvcnQgdW5pdHRlc3QKLQot
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHBvcnQKLWZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJhc2UKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxh
eW91dF9wYWNrYWdlLnRlc3RfZXhwZWN0YXRpb25zIGltcG9ydCAqCi0KLWNsYXNzIEZ1bmN0aW9u
c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X3Jlc3VsdF93YXNfZXhwZWN0
ZWQoc2VsZik6Ci0gICAgICAgICMgdGVzdCBiYXNpY3MKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMocmVzdWx0X3dhc19leHBlY3RlZChQQVNTLCBzZXQoW1BBU1NdKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgRmFsc2UpLCBUcnVlKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHRfd2FzX2V4cGVjdGVkKFRFWFQsIHNldChbUEFT
U10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNl
LCBGYWxzZSksIEZhbHNlKQotCi0gICAgICAgICMgdGVzdCBoYW5kbGluZyBvZiBGQUlMIGV4cGVj
dGF0aW9ucwotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHRfd2FzX2V4cGVjdGVkKElN
QUdFX1BMVVNfVEVYVCwgc2V0KFtGQUlMXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmFsc2UsIEZhbHNlKSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMocmVzdWx0X3dhc19leHBlY3RlZChJTUFHRSwgc2V0KFtGQUlMXSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UsIEZhbHNlKSwgVHJ1
ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzdWx0X3dhc19leHBlY3RlZChURVhULCBz
ZXQoW0ZBSUxdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGYWxzZSwgRmFsc2UpLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHRf
d2FzX2V4cGVjdGVkKENSQVNILCBzZXQoW0ZBSUxdKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgRmFsc2UpLCBGYWxzZSkKLQotICAgICAgICAj
IHRlc3QgaGFuZGxpbmcgb2YgU0tJUHBlZCB0ZXN0cyBhbmQgcmVzdWx0cwotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhyZXN1bHRfd2FzX2V4cGVjdGVkKFNLSVAsIHNldChbQ1JBU0hdKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgVHJ1ZSks
IFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3VsdF93YXNfZXhwZWN0ZWQoU0tJ
UCwgc2V0KFtDUkFTSF0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZhbHNlLCBGYWxzZSksIEZhbHNlKQotCi0gICAgICAgICMgdGVzdCBoYW5kbGluZyBv
ZiBNSVNTSU5HIHJlc3VsdHMgYW5kIHRoZSBSRUJBU0VMSU5FIG1vZGlmaWVyCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHJlc3VsdF93YXNfZXhwZWN0ZWQoTUlTU0lORywgc2V0KFtQQVNTXSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSwgRmFs
c2UpLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHRfd2FzX2V4cGVjdGVk
KE1JU1NJTkcsIHNldChbUEFTU10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZhbHNlLCBGYWxzZSksIEZhbHNlKQotCi0gICAgZGVmIHRlc3RfcmVtb3Zl
X3BpeGVsX2ZhaWx1cmVzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZW1vdmVf
cGl4ZWxfZmFpbHVyZXMoc2V0KFtURVhUXSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXQoW1RFWFRdKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVtb3ZlX3BpeGVsX2ZhaWx1
cmVzKHNldChbUEFTU10pKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KFtQQVNTXSkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlbW92ZV9waXhlbF9mYWlsdXJlcyhzZXQoW0lN
QUdFXSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoW1BBU1NdKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMocmVtb3ZlX3BpeGVsX2ZhaWx1cmVzKHNldChbSU1BR0VfUExVU19U
RVhUXSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoW1RFWFRdKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMocmVtb3ZlX3BpeGVsX2ZhaWx1cmVzKHNldChbUEFTUywgSU1BR0Us
IENSQVNIXSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoW1BBU1MsIENSQVNIXSkp
Ci0KLQotY2xhc3MgQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIyBOb3RlIHRoYXQgYWxs
IG9mIHRoZXNlIHRlc3RzIGFyZSB3cml0dGVuIGFzc3VtaW5nIHRoZSBjb25maWd1cmF0aW9uCi0g
ICAgIyBiZWluZyB0ZXN0ZWQgaXMgV2luZG93cyBYUCwgUmVsZWFzZSBidWlsZC4KLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCB0ZXN0RnVuYywgc2V0VXA9Tm9uZSwgdGVhckRvd249Tm9uZSwgZGVz
Y3JpcHRpb249Tm9uZSk6Ci0gICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0LmdldCgndGVzdC13aW4t
eHAnLCBOb25lKQotICAgICAgICBzZWxmLl9mcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KLSAg
ICAgICAgc2VsZi5fZXhwID0gTm9uZQotICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRf
XyhzZWxmLCB0ZXN0RnVuYykKLQotICAgIGRlZiBnZXRfdGVzdChzZWxmLCB0ZXN0X25hbWUpOgot
ICAgICAgICAjIEZJWE1FOiBSZW1vdmUgdGhpcyByb3V0aW5lIGFuZCBqdXN0IHJlZmVyZW5jZSB0
ZXN0IG5hbWVzIGRpcmVjdGx5LgotICAgICAgICByZXR1cm4gdGVzdF9uYW1lCi0KLSAgICBkZWYg
Z2V0X2Jhc2ljX3Rlc3RzKHNlbGYpOgotICAgICAgICByZXR1cm4gW3NlbGYuZ2V0X3Rlc3QoJ2Zh
aWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcpLAotICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rl
c3QoJ2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwnKSwKLSAgICAgICAgICAg
ICAgICBzZWxmLmdldF90ZXN0KCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJyksCi0gICAg
ICAgICAgICAgICAgc2VsZi5nZXRfdGVzdCgnZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ190ZXh0
Lmh0bWwnKSwKLSAgICAgICAgICAgICAgICBzZWxmLmdldF90ZXN0KCdmYWlsdXJlcy9leHBlY3Rl
ZC9pbWFnZS5odG1sJyksCi0gICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVzdCgncGFzc2VzL3Rl
eHQuaHRtbCcpXQotCi0gICAgZGVmIGdldF9iYXNpY19leHBlY3RhdGlvbnMoc2VsZik6Ci0gICAg
ICAgIHJldHVybiAiIiIKLUJVR19URVNUIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0g
VEVYVAotQlVHX1RFU1QgV09OVEZJWCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRt
bCA9IENSQVNICi1CVUdfVEVTVCBSRUJBU0VMSU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2lu
Z19pbWFnZS5odG1sID0gTUlTU0lORwotQlVHX1RFU1QgV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVj
dGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwgPSBJTUFHRQotQlVHX1RFU1QgV09OVEZJWCBNQUMgOiBm
YWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sID0gSU1BR0UKLSIiIgotCi0gICAgZGVmIHBhcnNl
X2V4cChzZWxmLCBleHBlY3RhdGlvbnMsIG92ZXJyaWRlcz1Ob25lLCBpc19saW50X21vZGU9RmFs
c2UpOgotICAgICAgICB0ZXN0X2NvbmZpZyA9IHNlbGYuX3BvcnQudGVzdF9jb25maWd1cmF0aW9u
KCkKLSAgICAgICAgc2VsZi5fZXhwID0gVGVzdEV4cGVjdGF0aW9ucyhzZWxmLl9wb3J0LAotICAg
ICAgICAgICAgIHRlc3RzPXNlbGYuZ2V0X2Jhc2ljX3Rlc3RzKCksCi0gICAgICAgICAgICAgZXhw
ZWN0YXRpb25zPWV4cGVjdGF0aW9ucywKLSAgICAgICAgICAgICB0ZXN0X2NvbmZpZz10ZXN0X2Nv
bmZpZywKLSAgICAgICAgICAgICBpc19saW50X21vZGU9aXNfbGludF9tb2RlLAotICAgICAgICAg
ICAgIG92ZXJyaWRlcz1vdmVycmlkZXMpCi0KLSAgICBkZWYgYXNzZXJ0X2V4cChzZWxmLCB0ZXN0
LCByZXN1bHQpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9leHAuZ2V0X2V4cGVj
dGF0aW9ucyhzZWxmLmdldF90ZXN0KHRlc3QpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0KFtyZXN1bHRdKSkKLQotCi1jbGFzcyBCYXNpY1Rlc3RzKEJhc2UpOgotICAgIGRlZiB0ZXN0
X2Jhc2ljKHNlbGYpOgotICAgICAgICBzZWxmLnBhcnNlX2V4cChzZWxmLmdldF9iYXNpY19leHBl
Y3RhdGlvbnMoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90
ZXh0Lmh0bWwnLCBURVhUKQotICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVj
dGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwnLCBJTUFHRSkKLSAgICAgICAgc2VsZi5hc3NlcnRfZXhw
KCdwYXNzZXMvdGV4dC5odG1sJywgUEFTUykKLSAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWls
dXJlcy9leHBlY3RlZC9pbWFnZS5odG1sJywgUEFTUykKLQotCi1jbGFzcyBNaXNjVGVzdHMoQmFz
ZSk6Ci0gICAgZGVmIHRlc3RfbXVsdGlwbGVfcmVzdWx0cyhzZWxmKToKLSAgICAgICAgc2VsZi5w
YXJzZV9leHAoJ0JVR1ggOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUIENSQVNI
JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9leHAuZ2V0X2V4cGVjdGF0aW9ucygK
LSAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcp
KSwKLSAgICAgICAgICAgIHNldChbVEVYVCwgQ1JBU0hdKSkKLQotICAgIGRlZiB0ZXN0X2NhdGVn
b3J5X2V4cGVjdGF0aW9ucyhzZWxmKToKLSAgICAgICAgIyBUaGlzIHRlc3QgY2hlY2tzIHVua25v
d24gdGVzdHMgYXJlIG5vdCBwcmVzZW50IGluIHRoZQotICAgICAgICAjIGV4cGVjdGF0aW9ucyBh
bmQgdGhhdCBrbm93biB0ZXN0IHBhcnQgb2YgYSB0ZXN0IGNhdGVnb3J5IGlzCi0gICAgICAgICMg
cHJlc2VudCBpbiB0aGUgZXhwZWN0YXRpb25zLgotICAgICAgICBleHBfc3RyID0gIiIiCi1CVUdY
IFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZCA9IElNQUdFCi0iIiIKLSAgICAgICAgc2VsZi5w
YXJzZV9leHAoZXhwX3N0cikKLSAgICAgICAgdGVzdF9uYW1lID0gJ2ZhaWx1cmVzL2V4cGVjdGVk
L3Vua25vd24tdGVzdC5odG1sJwotICAgICAgICB1bmtub3duX3Rlc3QgPSBzZWxmLmdldF90ZXN0
KHRlc3RfbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNlbGYuX2V4
cC5nZXRfZXhwZWN0YXRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1bmtub3duX3Rl
c3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRt
bCcsIElNQUdFKQotCi0gICAgZGVmIHRlc3RfZ2V0X29wdGlvbnMoc2VsZik6Ci0gICAgICAgIHNl
bGYucGFyc2VfZXhwKHNlbGYuZ2V0X2Jhc2ljX2V4cGVjdGF0aW9ucygpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYuX2V4cC5nZXRfb3B0aW9ucygKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLmdldF90ZXN0KCdwYXNzZXMvdGV4dC5odG1sJykpLCBbXSkKLQotICAgIGRlZiB0
ZXN0X2V4cGVjdGF0aW9uc19qc29uX2Zvcl9hbGxfcGxhdGZvcm1zKHNlbGYpOgotICAgICAgICBz
ZWxmLnBhcnNlX2V4cChzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSkKLSAgICAgICAganNv
bl9zdHIgPSBzZWxmLl9leHAuZ2V0X2V4cGVjdGF0aW9uc19qc29uX2Zvcl9hbGxfcGxhdGZvcm1z
KCkKLSAgICAgICAgIyBGSVhNRTogdGVzdCBhY3R1YWwgY29udGVudD8KLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGpzb25fc3RyKQotCi0gICAgZGVmIHRlc3RfZ2V0X2V4cGVjdGF0aW9uc19zdHJp
bmcoc2VsZik6Ci0gICAgICAgIHNlbGYucGFyc2VfZXhwKHNlbGYuZ2V0X2Jhc2ljX2V4cGVjdGF0
aW9ucygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9leHAuZ2V0X2V4cGVjdGF0
aW9uc19zdHJpbmcoCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QoJ2Zh
aWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
J1RFWFQnKQotCi0gICAgZGVmIHRlc3RfZXhwZWN0YXRpb25fdG9fc3RyaW5nKHNlbGYpOgotICAg
ICAgICAjIE5vcm1hbCBjYXNlcyBhcmUgaGFuZGxlZCBieSBvdGhlciB0ZXN0cy4KLSAgICAgICAg
c2VsZi5wYXJzZV9leHAoc2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuX2V4cC5leHBlY3RhdGlvbl90b19zdHJp
bmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIC0xKQotCi0gICAgZGVmIHRlc3RfZ2V0X3Rl
c3Rfc2V0KHNlbGYpOgotICAgICAgICAjIEhhbmRsZSBzb21lIGNvcm5lciBjYXNlcyBmb3IgdGhp
cyByb3V0aW5lIG5vdCBjb3ZlcmVkIGJ5IG90aGVyIHRlc3RzLgotICAgICAgICBzZWxmLnBhcnNl
X2V4cChzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSkKLSAgICAgICAgcyA9IHNlbGYuX2V4
cC5nZXRfdGVzdF9zZXQoV09OVEZJWCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLAotICAg
ICAgICAgICAgc2V0KFtzZWxmLmdldF90ZXN0KCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1s
JyksCi0gICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QoJ2ZhaWx1cmVzL2V4cGVjdGVkL2lt
YWdlX2NoZWNrc3VtLmh0bWwnKV0pKQotICAgICAgICBzID0gc2VsZi5fZXhwLmdldF90ZXN0X3Nl
dChXT05URklYLCBDUkFTSCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLAotICAgICAgICAg
ICAgc2V0KFtzZWxmLmdldF90ZXN0KCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJyldKSkK
LSAgICAgICAgcyA9IHNlbGYuX2V4cC5nZXRfdGVzdF9zZXQoV09OVEZJWCwgQ1JBU0gsIGluY2x1
ZGVfc2tpcHM9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgc2V0KFtdKSkKLQot
ICAgIGRlZiB0ZXN0X3BhcnNlX2Vycm9yX2ZhdGFsKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBzZWxmLnBhcnNlX2V4cCgiIiJGT08gOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0
bWwgPSBURVhUCi1TS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCIiIikKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoVHJ1ZSwgIlBhcnNlRXJyb3Igd2Fzbid0IHJhaXNlZCIp
Ci0gICAgICAgIGV4Y2VwdCBQYXJzZUVycm9yLCBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGUuZmF0YWwpCi0gICAgICAgICAgICBleHBfZXJyb3JzID0gW3UiTGluZToxIFVucmVjb2du
aXplZCBvcHRpb24gJ2ZvbycgZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgdSJMaW5lOjIgTWlzc2luZyBleHBlY3RhdGlvbnMuIFsnIGZhaWx1
cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwnXSJdCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN0cihlKSwgJ1xuJy5qb2luKG1hcChzdHIsIGV4cF9lcnJvcnMpKSkKLSAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZS5lcnJvcnMsIGV4cF9lcnJvcnMpCi0KLSAgICBkZWYgdGVzdF9wYXJz
ZV9lcnJvcl9ub25mYXRhbChzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5w
YXJzZV9leHAoJ1NLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2xpbnRfbW9kZT1UcnVlKQotICAgICAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShUcnVlLCAiUGFyc2VFcnJvciB3YXNuJ3QgcmFpc2VkIikKLSAgICAg
ICAgZXhjZXB0IFBhcnNlRXJyb3IsIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGUu
ZmF0YWwpCi0gICAgICAgICAgICBleHBfZXJyb3JzID0gW3UnTGluZToxIFRlc3QgbGFja3MgQlVH
IG1vZGlmaWVyLiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnXQotICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHIoZSksICdcbicuam9pbihtYXAoc3RyLCBleHBfZXJyb3JzKSkpCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXJyb3JzLCBleHBfZXJyb3JzKQotCi0gICAg
ZGVmIHRlc3Rfb3ZlcnJpZGVzKHNlbGYpOgotICAgICAgICBzZWxmLnBhcnNlX2V4cCgiQlVHX0VY
UDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICJCVUdfT1ZFUlJJREUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFH
RSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1s
JywgSU1BR0UpCi0KLSAgICBkZWYgdGVzdF9vdmVycmlkZXNfX2R1cGxpY2F0ZShzZWxmKToKLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCi0gICAg
ICAgICAgICAgIkJVR19FWFA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQiLAot
ICAgICAgICAgICAgICIiIgotQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5o
dG1sID0gSU1BR0UKLUJVR19PVkVSUklERSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9
IENSQVNICi0iIiIpCi0KLSAgICBkZWYgdGVzdF9waXhlbF90ZXN0c19mbGFnKHNlbGYpOgotICAg
ICAgICBkZWYgbWF0Y2godGVzdCwgcmVzdWx0LCBwaXhlbF90ZXN0c19lbmFibGVkKToKLSAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9leHAubWF0Y2hlc19hbl9leHBlY3RlZF9yZXN1bHQoCi0gICAg
ICAgICAgICAgICAgc2VsZi5nZXRfdGVzdCh0ZXN0KSwgcmVzdWx0LCBwaXhlbF90ZXN0c19lbmFi
bGVkKQotCi0gICAgICAgIHNlbGYucGFyc2VfZXhwKHNlbGYuZ2V0X2Jhc2ljX2V4cGVjdGF0aW9u
cygpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL3Rl
eHQuaHRtbCcsIFRFWFQsIFRydWUpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2goJ2Zh
aWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIFRFWFQsIEZhbHNlKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShtYXRjaCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgQ1JBU0gsIFRy
dWUpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC90
ZXh0Lmh0bWwnLCBDUkFTSCwgRmFsc2UpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2go
J2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwnLCBJTUFHRSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRydWUpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0
Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwnLCBQQVNTLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUo
bWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwnLCBTS0lQLCBGYWxzZSkpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgncGFzc2VzL3RleHQuaHRtbCcsIFBBU1MsIEZhbHNl
KSkKLQotICAgIGRlZiB0ZXN0X21vcmVfc3BlY2lmaWNfb3ZlcnJpZGVfcmVzZXRzX3NraXAoc2Vs
Zik6Ci0gICAgICAgIHNlbGYucGFyc2VfZXhwKCJCVUdYIFNLSVAgOiBmYWlsdXJlcy9leHBlY3Rl
ZCA9IFRFWFRcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIkJVR1ggOiBmYWlsdXJlcy9leHBl
Y3RlZC90ZXh0Lmh0bWwgPSBJTUFHRVxuIikKLSAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWls
dXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBJTUFHRSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4oc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGly
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnKSBpbgotICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2V4cC5nZXRfdGVzdHNfd2l0aF9yZXN1bHRfdHlwZShTS0lQKSkKLQotY2xhc3Mg
RXhwZWN0YXRpb25TeW50YXhUZXN0cyhCYXNlKToKLSAgICBkZWYgdGVzdF9taXNzaW5nX2V4cGVj
dGF0aW9uKHNlbGYpOgotICAgICAgICAjIFRoaXMgaXMgbWlzc2luZyB0aGUgZXhwZWN0YXRpb24u
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAnQlVHX1RFU1Q6IGZhaWx1cmVzL2V4cGVjdGVkL3Rl
eHQuaHRtbCcpCi0KLSAgICBkZWYgdGVzdF9taXNzaW5nX2NvbG9uKHNlbGYpOgotICAgICAgICAj
IFRoaXMgaXMgbWlzc2luZyB0aGUgbW9kaWZpZXJzIGFuZCB0aGUgJzonCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcpCi0KLSAgICBk
ZWYgZGlzYWJsZWRfdGVzdF90b29fbWFueV9jb2xvbnMoc2VsZik6Ci0gICAgICAgICMgRklYTUU6
IEVuYWJsZSB0aGlzIHRlc3QgYW5kIGZpeCB0aGUgdW5kZXJseWluZyBidWcuCi0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAnQlVHX1RFU1Q6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFBB
U1MgOicpCi0KLSAgICBkZWYgdGVzdF90b29fbWFueV9lcXVhbHNfc2lnbnMoc2VsZik6Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAnQlVHX1RFU1Q6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRt
bCA9IFRFWFQgPSBJTUFHRScpCi0KLSAgICBkZWYgdGVzdF91bnJlY29nbml6ZWRfZXhwZWN0YXRp
b24oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFy
c2VfZXhwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnQlVHX1RFU1Q6IGZhaWx1cmVzL2V4
cGVjdGVkL3RleHQuaHRtbCA9IFVOS05PV04nKQotCi0gICAgZGVmIHRlc3RfbWFjcm8oc2VsZik6
Ci0gICAgICAgIGV4cF9zdHIgPSAiIiIKLUJVR19URVNUIFdJTiA6IGZhaWx1cmVzL2V4cGVjdGVk
L3RleHQuaHRtbCA9IFRFWFQKLSIiIgotICAgICAgICBzZWxmLnBhcnNlX2V4cChleHBfc3RyKQot
ICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIFRF
WFQpCi0KLQotY2xhc3MgU2VtYW50aWNUZXN0cyhCYXNlKToKLSAgICBkZWYgdGVzdF9idWdfZm9y
bWF0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBh
cnNlX2V4cCwgJ0JVRzEyMzQgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJykK
LQotICAgIGRlZiB0ZXN0X21pc3NpbmdfYnVnaWQoc2VsZik6Ci0gICAgICAgICMgVGhpcyBzaG91
bGQgbG9nIGEgbm9uLWZhdGFsIGVycm9yLgotICAgICAgICBzZWxmLnBhcnNlX2V4cCgnU0xPVyA6
IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAotICAgICAgICAgICAgbGVuKHNlbGYuX2V4cC5nZXRfbm9uX2ZhdGFsX2Vycm9ycygp
KSwgMSkKLQotICAgIGRlZiB0ZXN0X3Nsb3dfYW5kX3RpbWVvdXQoc2VsZik6Ci0gICAgICAgICMg
QSB0ZXN0IGNhbm5vdCBiZSBTTE9XIGFuZCBleHBlY3RlZCB0byBUSU1FT1VULgotICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwKLSAgICAgICAgICAg
ICdCVUdfVEVTVCBTTE9XIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGltZW91dC5odG1sID0gVElNRU9V
VCcpCi0KLSAgICBkZWYgdGVzdF9yZWJhc2VsaW5lKHNlbGYpOgotICAgICAgICAjIENhbid0IGxp
bnQgYSBmaWxlIHcvICdSRUJBU0VMSU5FJyBpbiBpdC4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCi0gICAgICAgICAgICAnQlVHX1RFU1QgUkVC
QVNFTElORSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnLAotICAgICAgICAg
ICAgaXNfbGludF9tb2RlPVRydWUpCi0KLSAgICBkZWYgdGVzdF9kdXBsaWNhdGVzKHNlbGYpOgot
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgIiIi
Ci1CVUdfRVhQIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAotQlVHX0VYUCA6
IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IElNQUdFIiIiKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAotICAgICAgICAgICAgc2Vs
Zi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCksIG92ZXJyaWRlcz0iIiIKLUJVR19PVkVSUklERSA6
IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKLUJVR19PVkVSUklERSA6IGZhaWx1
cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IElNQUdFIiIiLCApCi0KLSAgICBkZWYgdGVzdF9taXNz
aW5nX2ZpbGUoc2VsZik6Ci0gICAgICAgICMgVGhpcyBzaG91bGQgbG9nIGEgbm9uLWZhdGFsIGVy
cm9yLgotICAgICAgICBzZWxmLnBhcnNlX2V4cCgnQlVHX1RFU1QgOiBtaXNzaW5nX2ZpbGUuaHRt
bCA9IFRFWFQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLl9leHAuZ2V0X25v
bl9mYXRhbF9lcnJvcnMoKSksIDEpCi0KLQotY2xhc3MgUHJlY2VkZW5jZVRlc3RzKEJhc2UpOgot
ICAgIGRlZiB0ZXN0X2ZpbGVfb3Zlcl9kaXJlY3Rvcnkoc2VsZik6Ci0gICAgICAgICMgVGhpcyB0
ZXN0cyBoYW5kbGluZyBwcmVjZWRlbmNlIG9mIHNwZWNpZmljIGxpbmVzIG92ZXIgZGlyZWN0b3Jp
ZXMKLSAgICAgICAgIyBhbmQgdGVzdHMgZXhwZWN0YXRpb25zIGNvdmVyaW5nIGVudGlyZSBkaXJl
Y3Rvcmllcy4KLSAgICAgICAgZXhwX3N0ciA9ICIiIgotQlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVk
L3RleHQuaHRtbCA9IFRFWFQKLUJVR1ggV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkID0gSU1B
R0UKLSIiIgotICAgICAgICBzZWxmLnBhcnNlX2V4cChleHBfc3RyKQotICAgICAgICBzZWxmLmFz
c2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIFRFWFQpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQotCi0g
ICAgICAgIGV4cF9zdHIgPSAiIiIKLUJVR1ggV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkID0g
SU1BR0UKLUJVR1ggOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCi0iIiIKLSAg
ICAgICAgc2VsZi5wYXJzZV9leHAoZXhwX3N0cikKLSAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhUKQotICAgICAgICBzZWxmLmFzc2VydF9l
eHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwnLCBJTUFHRSkKLQotICAgIGRlZiB0ZXN0
X2FtYmlndW91cyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwg
c2VsZi5wYXJzZV9leHAsICIiIgotQlVHX1RFU1QgUkVMRUFTRSA6IHBhc3Nlcy90ZXh0Lmh0bWwg
PSBQQVNTCi1CVUdfVEVTVCBXSU4gOiBwYXNzZXMvdGV4dC5odG1sID0gRkFJTAotIiIiKQotCi0g
ICAgZGVmIHRlc3RfbW9yZV9tb2RpZmllcnMoc2VsZik6Ci0gICAgICAgIGV4cF9zdHIgPSAiIiIK
LUJVR19URVNUIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUwotQlVHX1RFU1QgV0lO
IFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0gVEVYVAotIiIiCi0gICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLCBleHBfc3RyKQotCi0gICAgZGVm
IHRlc3Rfb3JkZXJfaW5fZmlsZShzZWxmKToKLSAgICAgICAgZXhwX3N0ciA9ICIiIgotQlVHX1RF
U1QgV0lOIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0gVEVYVAotQlVHX1RFU1QgUkVMRUFT
RSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTCi0iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsIGV4cF9zdHIpCi0KLSAgICBkZWYgdGVzdF9t
YWNyb19vdmVycmlkZXMoc2VsZik6Ci0gICAgICAgIGV4cF9zdHIgPSAiIiIKLUJVR19URVNUIFdJ
TiA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTCi1CVUdfVEVTVCBYUCA6IHBhc3Nlcy90ZXh0Lmh0
bWwgPSBURVhUCi0iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2Vs
Zi5wYXJzZV9leHAsIGV4cF9zdHIpCi0KLQotY2xhc3MgUmViYXNlbGluaW5nVGVzdChCYXNlKToK
LSAgICAiIiJUZXN0IHJlYmFzZWxpbmluZy1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5LiIiIgotICAg
IGRlZiBhc3NlcnRSZW1vdmUoc2VsZiwgaW5wdXRfZXhwZWN0YXRpb25zLCB0ZXN0cywgZXhwZWN0
ZWRfZXhwZWN0YXRpb25zKToKLSAgICAgICAgc2VsZi5wYXJzZV9leHAoaW5wdXRfZXhwZWN0YXRp
b25zKQotICAgICAgICBhY3R1YWxfZXhwZWN0YXRpb25zID0gc2VsZi5fZXhwLnJlbW92ZV9yZWJh
c2VsaW5lZF90ZXN0cyh0ZXN0cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9l
eHBlY3RhdGlvbnMsIGFjdHVhbF9leHBlY3RhdGlvbnMpCi0KLSAgICBkZWYgdGVzdF9yZW1vdmUo
c2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVtb3ZlKCdCVUdYIFJFQkFTRUxJTkUgOiBmYWls
dXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUXG4nCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICdCVUdZIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCA9IElNQUdFXG4nCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICdCVUdaIFJFQkFTRUxJTkUgOiBmYWlsdXJlcy9leHBlY3Rl
ZC9jcmFzaC5odG1sID0gQ1JBU0hcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFsnZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdC
VUdZIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCA9IElNQUdFXG4nCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICdCVUdaIFJFQkFTRUxJTkUgOiBmYWlsdXJlcy9leHBlY3RlZC9jcmFz
aC5odG1sID0gQ1JBU0hcbicpCi0KLSAgICBkZWYgdGVzdF9ub19nZXRfcmViYXNlbGluaW5nX2Zh
aWx1cmVzKHNlbGYpOgotICAgICAgICBzZWxmLnBhcnNlX2V4cChzZWxmLmdldF9iYXNpY19leHBl
Y3RhdGlvbnMoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5fZXhwLmdldF9y
ZWJhc2VsaW5pbmdfZmFpbHVyZXMoKSksIDApCi0KLQotY2xhc3MgTW9kaWZpZXJUZXN0cyh1bml0
dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBwb3J0X29iaiA9
IHBvcnQuZ2V0KCd0ZXN0LXdpbi14cCcsIE5vbmUpCi0gICAgICAgIHNlbGYuY29uZmlnID0gcG9y
dF9vYmoudGVzdF9jb25maWd1cmF0aW9uKCkKLSAgICAgICAgc2VsZi5tYXRjaGVyID0gTW9kaWZp
ZXJNYXRjaGVyKHNlbGYuY29uZmlnKQotCi0gICAgZGVmIG1hdGNoKHNlbGYsIG1vZGlmaWVycywg
ZXhwZWN0ZWRfbnVtX21hdGNoZXM9LTEsIHZhbHVlcz1Ob25lLCBudW1fZXJyb3JzPTApOgotICAg
ICAgICBtYXRjaGVyID0gc2VsZi5tYXRjaGVyCi0gICAgICAgIGlmIHZhbHVlczoKLSAgICAgICAg
ICAgIG1hdGNoZXIgPSBNb2RpZmllck1hdGNoZXIoc2VsZi5GYWtlVGVzdENvbmZpZ3VyYXRpb24o
dmFsdWVzKSkKLSAgICAgICAgbWF0Y2hfcmVzdWx0ID0gbWF0Y2hlci5tYXRjaChtb2RpZmllcnMp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1hdGNoX3Jlc3VsdC53YXJuaW5ncyksIDAp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1hdGNoX3Jlc3VsdC5lcnJvcnMpLCBudW1f
ZXJyb3JzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGNoX3Jlc3VsdC5udW1fbWF0Y2hl
cywgZXhwZWN0ZWRfbnVtX21hdGNoZXMsCi0gICAgICAgICAgICAgJ21hdGNoKCVzLCAlcykgcmV0
dXJuZWQgLT4gJWQsIGV4cGVjdGVkICVkJyAlCi0gICAgICAgICAgICAgKG1vZGlmaWVycywgc3Ry
KHNlbGYuY29uZmlnLnZhbHVlcygpKSwKLSAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0Lm51bV9t
YXRjaGVzLCBleHBlY3RlZF9udW1fbWF0Y2hlcykpCi0KLSAgICBkZWYgdGVzdF9iYWRfbWF0Y2hf
bW9kaWZpZXIoc2VsZik6Ci0gICAgICAgIHNlbGYubWF0Y2goWydmb28nXSwgbnVtX2Vycm9ycz0x
KQotCi0gICAgZGVmIHRlc3Rfbm9uZShzZWxmKToKLSAgICAgICAgc2VsZi5tYXRjaChbXSwgMCkK
LQotICAgIGRlZiB0ZXN0X29uZShzZWxmKToKLSAgICAgICAgc2VsZi5tYXRjaChbJ3hwJ10sIDEp
Ci0gICAgICAgIHNlbGYubWF0Y2goWyd3aW4nXSwgMSkKLSAgICAgICAgc2VsZi5tYXRjaChbJ3Jl
bGVhc2UnXSwgMSkKLSAgICAgICAgc2VsZi5tYXRjaChbJ2NwdSddLCAxKQotICAgICAgICBzZWxm
Lm1hdGNoKFsneDg2J10sIDEpCi0gICAgICAgIHNlbGYubWF0Y2goWydsZW9wYXJkJ10sIC0xKQot
ICAgICAgICBzZWxmLm1hdGNoKFsnZ3B1J10sIC0xKQotICAgICAgICBzZWxmLm1hdGNoKFsnZGVi
dWcnXSwgLTEpCi0KLSAgICBkZWYgdGVzdF90d28oc2VsZik6Ci0gICAgICAgIHNlbGYubWF0Y2go
Wyd4cCcsICdyZWxlYXNlJ10sIDIpCi0gICAgICAgIHNlbGYubWF0Y2goWyd3aW43JywgJ3JlbGVh
c2UnXSwgLTEpCi0gICAgICAgIHNlbGYubWF0Y2goWyd3aW43JywgJ3hwJ10sIDEpCi0KLSAgICBk
ZWYgdGVzdF90aHJlZShzZWxmKToKLSAgICAgICAgc2VsZi5tYXRjaChbJ3dpbjcnLCAneHAnLCAn
cmVsZWFzZSddLCAyKQotICAgICAgICBzZWxmLm1hdGNoKFsneHAnLCAnZGVidWcnLCAneDg2J10s
IC0xKQotICAgICAgICBzZWxmLm1hdGNoKFsneHAnLCAncmVsZWFzZScsICd4ODYnXSwgMykKLSAg
ICAgICAgc2VsZi5tYXRjaChbJ3hwJywgJ2NwdScsICdyZWxlYXNlJ10sIDMpCi0KLSAgICBkZWYg
dGVzdF9mb3VyKHNlbGYpOgotICAgICAgICBzZWxmLm1hdGNoKFsneHAnLCAncmVsZWFzZScsICdj
cHUnLCAneDg2J10sIDQpCi0gICAgICAgIHNlbGYubWF0Y2goWyd3aW43JywgJ3hwJywgJ3JlbGVh
c2UnLCAnY3B1J10sIDMpCi0gICAgICAgIHNlbGYubWF0Y2goWyd3aW43JywgJ3hwJywgJ2RlYnVn
JywgJ2NwdSddLCAtMSkKLQotICAgIGRlZiB0ZXN0X2Nhc2VfaW5zZW5zaXRpdml0eShzZWxmKToK
LSAgICAgICAgc2VsZi5tYXRjaChbJ1dpbiddLCBudW1fZXJyb3JzPTEpCi0gICAgICAgIHNlbGYu
bWF0Y2goWydXSU4nXSwgbnVtX2Vycm9ycz0xKQotICAgICAgICBzZWxmLm1hdGNoKFsnd2luJ10s
IDEpCi0KLSAgICBkZWYgdGVzdF9kdXBsaWNhdGVzKHNlbGYpOgotICAgICAgICBzZWxmLm1hdGNo
KFsncmVsZWFzZScsICdyZWxlYXNlJ10sIG51bV9lcnJvcnM9MSkKLSAgICAgICAgc2VsZi5tYXRj
aChbJ3dpbicsICd4cCddLCBudW1fZXJyb3JzPTEpCi0gICAgICAgIHNlbGYubWF0Y2goWyd4cCcs
ICd4cCddLCBudW1fZXJyb3JzPTEpCi0gICAgICAgIHNlbGYubWF0Y2goWyd4cCcsICdyZWxlYXNl
JywgJ3hwJywgJ3JlbGVhc2UnXSwgbnVtX2Vycm9ycz0yKQotICAgICAgICBzZWxmLm1hdGNoKFsn
cmViYXNlbGluZScsICdyZWJhc2VsaW5lJ10sIG51bV9lcnJvcnM9MSkKLQotICAgIGRlZiB0ZXN0
X3Vua25vd25fb3B0aW9uKHNlbGYpOgotICAgICAgICBzZWxmLm1hdGNoKFsndm1zJ10sIG51bV9l
cnJvcnM9MSkKLQotICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZV9idWdzKHNlbGYpOgotICAgICAgICAj
IEJVRyogcmVnZXhlcyBjYW4gYXBwZWFyIG11bHRpcGxlIHRpbWVzLgotICAgICAgICBzZWxmLm1h
dGNoKFsnYnVnZm9vJywgJ2J1Z2JhciddLCAwKQotCi0gICAgZGVmIHRlc3RfcmVnZXhlc19hcmVf
aWdub3JlZChzZWxmKToKLSAgICAgICAgc2VsZi5tYXRjaChbJ2J1ZzEyM3h5JywgJ3JlYmFzZWxp
bmUnLCAnd29udGZpeCcsICdzbG93JywgJ3NraXAnXSwgMCkKLQotICAgIGRlZiB0ZXN0X25vbmVf
aXNfaW52YWxpZChzZWxmKToKLSAgICAgICAgc2VsZi5tYXRjaChbJ25vbmUnXSwgbnVtX2Vycm9y
cz0xKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigp
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS90ZXN0X2ZhaWx1cmVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHkJKHJldmlzaW9uIDkw
NTI4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvdGVzdF9mYWlsdXJlcy5weQkod29ya2luZyBjb3B5KQpAQCAtMSwyMjQgKzAsMCBAQAotIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiQ2xhc3NlcyBmb3IgZmFp
bHVyZXMgdGhhdCBvY2N1ciBkdXJpbmcgdGVzdHMuIiIiCi0KLWltcG9ydCB0ZXN0X2V4cGVjdGF0
aW9ucwotCi1pbXBvcnQgY1BpY2tsZQotCi0KLSMgRklYTUU6IFRoaXMgaXMgYmFja3dhcmRzLiAg
RWFjaCBUZXN0RmFpbHVyZSBzdWJjbGFzcyBzaG91bGQga25vdyB3aGF0Ci0jIHRlc3RfZXhwZWN0
YXRpb24gdHlwZSBpdCBjb3JyZXNwb25kcyB0b28uICBUaGVuIHRoaXMgbWV0aG9kIGp1c3QKLSMg
Y29sbGVjdHMgdGhlbSBhbGwgZnJvbSB0aGUgZmFpbHVyZSBsaXN0IGFuZCByZXR1cm5zIHRoZSB3
b3JzdCBvbmUuCi1kZWYgZGV0ZXJtaW5lX3Jlc3VsdF90eXBlKGZhaWx1cmVfbGlzdCk6Ci0gICAg
IiIiVGFrZXMgYSBzZXQgb2YgdGVzdF9mYWlsdXJlcyBhbmQgcmV0dXJucyB3aGljaCByZXN1bHQg
dHlwZSBiZXN0IGZpdHMKLSAgICB0aGUgbGlzdCBvZiBmYWlsdXJlcy4gIkJlc3QgZml0cyIgbWVh
bnMgd2UgdXNlIHRoZSB3b3JzdCB0eXBlIG9mIGZhaWx1cmUuCi0KLSAgICBSZXR1cm5zOgotICAg
ICAgb25lIG9mIHRoZSB0ZXN0X2V4cGVjdGF0aW9ucyByZXN1bHQgdHlwZXMgLSBQQVNTLCBURVhU
LCBDUkFTSCwgZXRjLiIiIgotCi0gICAgaWYgbm90IGZhaWx1cmVfbGlzdCBvciBsZW4oZmFpbHVy
ZV9saXN0KSA9PSAwOgotICAgICAgICByZXR1cm4gdGVzdF9leHBlY3RhdGlvbnMuUEFTUwotCi0g
ICAgZmFpbHVyZV90eXBlcyA9IFt0eXBlKGYpIGZvciBmIGluIGZhaWx1cmVfbGlzdF0KLSAgICBp
ZiBGYWlsdXJlQ3Jhc2ggaW4gZmFpbHVyZV90eXBlczoKLSAgICAgICAgcmV0dXJuIHRlc3RfZXhw
ZWN0YXRpb25zLkNSQVNICi0gICAgZWxpZiBGYWlsdXJlVGltZW91dCBpbiBmYWlsdXJlX3R5cGVz
OgotICAgICAgICByZXR1cm4gdGVzdF9leHBlY3RhdGlvbnMuVElNRU9VVAotICAgIGVsaWYgKEZh
aWx1cmVNaXNzaW5nUmVzdWx0IGluIGZhaWx1cmVfdHlwZXMgb3IKLSAgICAgICAgICBGYWlsdXJl
TWlzc2luZ0ltYWdlIGluIGZhaWx1cmVfdHlwZXMgb3IKLSAgICAgICAgICBGYWlsdXJlTWlzc2lu
Z0ltYWdlSGFzaCBpbiBmYWlsdXJlX3R5cGVzIG9yCi0gICAgICAgICAgRmFpbHVyZU1pc3NpbmdB
dWRpbyBpbiBmYWlsdXJlX3R5cGVzKToKLSAgICAgICAgcmV0dXJuIHRlc3RfZXhwZWN0YXRpb25z
Lk1JU1NJTkcKLSAgICBlbHNlOgotICAgICAgICBpc190ZXh0X2ZhaWx1cmUgPSBGYWlsdXJlVGV4
dE1pc21hdGNoIGluIGZhaWx1cmVfdHlwZXMKLSAgICAgICAgaXNfaW1hZ2VfZmFpbHVyZSA9IChG
YWlsdXJlSW1hZ2VIYXNoSW5jb3JyZWN0IGluIGZhaWx1cmVfdHlwZXMgb3IKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2ggaW4gZmFpbHVyZV90eXBl
cykKLSAgICAgICAgaXNfcmVmdGVzdF9mYWlsdXJlID0gKEZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2gg
aW4gZmFpbHVyZV90eXBlcyBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFpbHVy
ZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyIGluIGZhaWx1cmVfdHlwZXMpCi0gICAgICAgIGlz
X2F1ZGlvX2ZhaWx1cmUgPSAoRmFpbHVyZUF1ZGlvTWlzbWF0Y2ggaW4gZmFpbHVyZV90eXBlcykK
LSAgICAgICAgaWYgaXNfdGV4dF9mYWlsdXJlIGFuZCBpc19pbWFnZV9mYWlsdXJlOgotICAgICAg
ICAgICAgcmV0dXJuIHRlc3RfZXhwZWN0YXRpb25zLklNQUdFX1BMVVNfVEVYVAotICAgICAgICBl
bGlmIGlzX3RleHRfZmFpbHVyZToKLSAgICAgICAgICAgIHJldHVybiB0ZXN0X2V4cGVjdGF0aW9u
cy5URVhUCi0gICAgICAgIGVsaWYgaXNfaW1hZ2VfZmFpbHVyZSBvciBpc19yZWZ0ZXN0X2ZhaWx1
cmU6Ci0gICAgICAgICAgICByZXR1cm4gdGVzdF9leHBlY3RhdGlvbnMuSU1BR0UKLSAgICAgICAg
ZWxpZiBpc19hdWRpb19mYWlsdXJlOgotICAgICAgICAgICAgcmV0dXJuIHRlc3RfZXhwZWN0YXRp
b25zLkFVRElPCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1
bmNsYXNzaWZpYWJsZSBzZXQgb2YgZmFpbHVyZXM6ICIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKyBzdHIoZmFpbHVyZV90eXBlcykpCi0KLQotY2xhc3MgVGVzdEZhaWx1cmUob2JqZWN0
KToKLSAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIHRoYXQgZGVmaW5lcyB0aGUgZmFpbHVyZSBp
bnRlcmZhY2UuIiIiCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGxvYWRzKHMpOgotICAg
ICAgICAiIiJDcmVhdGVzIGEgVGVzdEZhaWx1cmUgb2JqZWN0IGZyb20gdGhlIHNwZWNpZmllZCBz
dHJpbmcuIiIiCi0gICAgICAgIHJldHVybiBjUGlja2xlLmxvYWRzKHMpCi0KLSAgICBAc3RhdGlj
bWV0aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKLSAgICAgICAgIiIiUmV0dXJucyBhIHN0cmluZyBk
ZXNjcmliaW5nIHRoZSBmYWlsdXJlIGluIG1vcmUgZGV0YWlsLiIiIgotICAgICAgICByYWlzZSBO
b3RJbXBsZW1lbnRlZEVycm9yCi0KLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fID09IG90aGVyLl9fY2xhc3NfXy5fX25h
bWVfXwotCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBzZWxm
Ll9fY2xhc3NfXy5fX25hbWVfXyAhPSBvdGhlci5fX2NsYXNzX18uX19uYW1lX18KLQotICAgIGRl
ZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fX2NsYXNzX18uX19u
YW1lX18pCi0KLSAgICBkZWYgZHVtcHMoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIHN0
cmluZy9KU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdEZhaWx1cmUuIiIiCi0gICAgICAgIHJl
dHVybiBjUGlja2xlLmR1bXBzKHNlbGYpCi0KLSAgICBkZWYgZHJpdmVyX25lZWRzX3Jlc3RhcnQo
c2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgVHJ1ZSBpZiB3ZSBzaG91bGQga2lsbCBEdW1wUmVu
ZGVyVHJlZS9XZWJLaXRUZXN0UnVubmVyIGJlZm9yZSB0aGUgbmV4dCB0ZXN0LiIiIgotICAgICAg
ICByZXR1cm4gRmFsc2UKLQotCi1jbGFzcyBGYWlsdXJlVGltZW91dChUZXN0RmFpbHVyZSk6Ci0g
ICAgIiIiVGVzdCB0aW1lZCBvdXQuICBXZSBhbHNvIHdhbnQgdG8gcmVzdGFydCBEdW1wUmVuZGVy
VHJlZSBpZiB0aGlzIGhhcHBlbnMuIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGlzX3JlZnRl
c3Q9RmFsc2UpOgotICAgICAgICBzZWxmLmlzX3JlZnRlc3QgPSBpc19yZWZ0ZXN0Ci0KLSAgICBA
c3RhdGljbWV0aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKLSAgICAgICAgcmV0dXJuICJUZXN0IHRp
bWVkIG91dCIKLQotICAgIGRlZiBkcml2ZXJfbmVlZHNfcmVzdGFydChzZWxmKToKLSAgICAgICAg
cmV0dXJuIFRydWUKLQotCi1jbGFzcyBGYWlsdXJlQ3Jhc2goVGVzdEZhaWx1cmUpOgotICAgICIi
IkR1bXBSZW5kZXJUcmVlIGNyYXNoZWQuIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGlzX3Jl
ZnRlc3Q9RmFsc2UpOgotICAgICAgICBzZWxmLmlzX3JlZnRlc3QgPSBpc19yZWZ0ZXN0Ci0KLSAg
ICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKLSAgICAgICAgIyBGSVhNRTogVGhp
cyBpcyB3cm9uZyBmb3IgV2ViS2l0MiAod2hpY2ggdXNlcyBXZWJLaXRUZXN0UnVubmVyKS4KLSAg
ICAgICAgcmV0dXJuICJEdW1wUmVuZGVyVHJlZSBjcmFzaGVkIgotCi0gICAgZGVmIGRyaXZlcl9u
ZWVkc19yZXN0YXJ0KHNlbGYpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0KLWNsYXNzIEZhaWx1
cmVNaXNzaW5nUmVzdWx0KFRlc3RGYWlsdXJlKToKLSAgICAiIiJFeHBlY3RlZCByZXN1bHQgd2Fz
IG1pc3NpbmcuIiIiCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKLSAg
ICAgICAgcmV0dXJuICJObyBleHBlY3RlZCByZXN1bHRzIGZvdW5kIgotCi0KLWNsYXNzIEZhaWx1
cmVUZXh0TWlzbWF0Y2goVGVzdEZhaWx1cmUpOgotICAgICIiIlRleHQgZGlmZiBvdXRwdXQgZmFp
bGVkLiIiIgotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBtZXNzYWdlKCk6Ci0gICAgICAg
IHJldHVybiAiVGV4dCBkaWZmIG1pc21hdGNoIgotCi0KLWNsYXNzIEZhaWx1cmVNaXNzaW5nSW1h
Z2VIYXNoKFRlc3RGYWlsdXJlKToKLSAgICAiIiJBY3R1YWwgcmVzdWx0IGhhc2ggd2FzIG1pc3Np
bmcuIiIiCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKLSAgICAgICAg
cmV0dXJuICJObyBleHBlY3RlZCBpbWFnZSBoYXNoIGZvdW5kIgotCi0KLWNsYXNzIEZhaWx1cmVN
aXNzaW5nSW1hZ2UoVGVzdEZhaWx1cmUpOgotICAgICIiIkFjdHVhbCByZXN1bHQgaW1hZ2Ugd2Fz
IG1pc3NpbmcuIiIiCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKLSAg
ICAgICAgcmV0dXJuICJObyBleHBlY3RlZCBpbWFnZSBmb3VuZCIKLQotCi1jbGFzcyBGYWlsdXJl
SW1hZ2VIYXNoTWlzbWF0Y2goVGVzdEZhaWx1cmUpOgotICAgICIiIkltYWdlIGhhc2hlcyBkaWRu
J3QgbWF0Y2guIiIiCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKLSAg
ICAgICAgcmV0dXJuICJJbWFnZSBtaXNtYXRjaCIKLQotCi1jbGFzcyBGYWlsdXJlSW1hZ2VIYXNo
SW5jb3JyZWN0KFRlc3RGYWlsdXJlKToKLSAgICAiIiJBY3R1YWwgcmVzdWx0IGhhc2ggaXMgaW5j
b3JyZWN0LiIiIgotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBtZXNzYWdlKCk6Ci0gICAg
ICAgIHJldHVybiAiSW1hZ2VzIG1hdGNoLCBleHBlY3RlZCBpbWFnZSBoYXNoIGluY29ycmVjdC4g
IgotCi0KLWNsYXNzIEZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2goVGVzdEZhaWx1cmUpOgotICAgICIi
IlRoZSByZXN1bHQgZGlkbid0IG1hdGNoIHRoZSByZWZlcmVuY2UgcmVuZGVyaW5nLiIiIgotCi0g
ICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBtZXNzYWdlKCk6Ci0gICAgICAgIHJldHVybiAiTWlz
bWF0Y2ggd2l0aCByZWZlcmVuY2UiCi0KLQotY2xhc3MgRmFpbHVyZVJlZnRlc3RNaXNtYXRjaERp
ZE5vdE9jY3VyKFRlc3RGYWlsdXJlKToKLSAgICAiIiJVbmV4cGVjdGVkIG1hdGNoIGJldHdlZW4g
dGhlIHJlc3VsdCBhbmQgdGhlIHJlZmVyZW5jZSByZW5kZXJpbmcuIiIiCi0KLSAgICBAc3RhdGlj
bWV0aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKLSAgICAgICAgcmV0dXJuICJNaXNtYXRjaCB3aXRo
IHRoZSByZWZlcmVuY2UgZGlkIG5vdCBvY2N1ciIKLQotCi1jbGFzcyBGYWlsdXJlTWlzc2luZ0F1
ZGlvKFRlc3RGYWlsdXJlKToKLSAgICAiIiJBY3R1YWwgcmVzdWx0IGltYWdlIHdhcyBtaXNzaW5n
LiIiIgotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBtZXNzYWdlKCk6Ci0gICAgICAgIHJl
dHVybiAiTm8gZXhwZWN0ZWQgYXVkaW8gZm91bmQiCi0KLQotY2xhc3MgRmFpbHVyZUF1ZGlvTWlz
bWF0Y2goVGVzdEZhaWx1cmUpOgotICAgICIiIkF1ZGlvIGZpbGVzIGRpZG4ndCBtYXRjaC4iIiIK
LQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgbWVzc2FnZSgpOgotICAgICAgICByZXR1cm4g
IkF1ZGlvIG1pc21hdGNoIgotCi0KLSMgQ29udmVuaWVudCBjb2xsZWN0aW9uIG9mIGFsbCBmYWls
dXJlIGNsYXNzZXMgZm9yIGFueXRoaW5nIHRoYXQgbWlnaHQKLSMgbmVlZCB0byBlbnVtZXJhdGUg
b3ZlciB0aGVtIGFsbC4KLUFMTF9GQUlMVVJFX0NMQVNTRVMgPSAoRmFpbHVyZVRpbWVvdXQsIEZh
aWx1cmVDcmFzaCwgRmFpbHVyZU1pc3NpbmdSZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAg
IEZhaWx1cmVUZXh0TWlzbWF0Y2gsIEZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoLAotICAgICAgICAg
ICAgICAgICAgICAgICBGYWlsdXJlTWlzc2luZ0ltYWdlLCBGYWlsdXJlSW1hZ2VIYXNoTWlzbWF0
Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIEZhaWx1cmVJbWFnZUhhc2hJbmNvcnJlY3QsIEZh
aWx1cmVSZWZ0ZXN0TWlzbWF0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIEZhaWx1cmVSZWZ0
ZXN0TWlzbWF0Y2hEaWROb3RPY2N1cikKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXNfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvdGVzdF9mYWlsdXJlc191bml0dGVzdC5weQkocmV2aXNpb24gOTA1MjgpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVz
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDY3ICswLDAgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0j
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0iIiIiVGVzdHMgY29kZSBwYXRocyBub3QgY292ZXJlZCBieSB0aGUgcmVndWxhciB1bml0
IHRlc3RzLiIiIgotCi1pbXBvcnQgdW5pdHRlc3QKLQotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubGF5b3V0X3BhY2thZ2UudGVzdF9mYWlsdXJlcyBpbXBvcnQgKgotCi0KLWNsYXNzIFRlc3RG
YWlsdXJlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBhc3NlcnRfbG9hZHMoc2Vs
ZiwgY2xzKToKLSAgICAgICAgZmFpbHVyZV9vYmogPSBjbHMoKQotICAgICAgICBzID0gZmFpbHVy
ZV9vYmouZHVtcHMoKQotICAgICAgICBuZXdfZmFpbHVyZV9vYmogPSBUZXN0RmFpbHVyZS5sb2Fk
cyhzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShuZXdfZmFpbHVyZV9vYmos
IGNscykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmYWlsdXJlX29iaiwgbmV3X2ZhaWx1
cmVfb2JqKQotCi0gICAgICAgICMgQWxzbyB0ZXN0IHRoYXQgIT0gaXMgaW1wbGVtZW50ZWQuCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZmFpbHVyZV9vYmogIT0gbmV3X2ZhaWx1cmVfb2JqKQot
Ci0gICAgZGVmIHRlc3RfdW5rbm93bl9mYWlsdXJlX3R5cGUoc2VsZik6Ci0gICAgICAgIGNsYXNz
IFVua25vd25GYWlsdXJlKFRlc3RGYWlsdXJlKToKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAg
ICBmYWlsdXJlX29iaiA9IFVua25vd25GYWlsdXJlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoVmFsdWVFcnJvciwgZGV0ZXJtaW5lX3Jlc3VsdF90eXBlLCBbZmFpbHVyZV9vYmpdKQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBmYWlsdXJlX29iai5t
ZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfbG9hZHMoc2VsZik6Ci0gICAgICAgIGZvciBjIGluIEFM
TF9GQUlMVVJFX0NMQVNTRVM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydF9sb2FkcyhjKQotCi0g
ICAgZGVmIHRlc3RfZXF1YWxzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhaWx1
cmVDcmFzaCgpLCBGYWlsdXJlQ3Jhc2goKSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChG
YWlsdXJlQ3Jhc2goKSwgRmFpbHVyZVRpbWVvdXQoKSkKLSAgICAgICAgY3Jhc2hfc2V0ID0gc2V0
KFtGYWlsdXJlQ3Jhc2goKSwgRmFpbHVyZUNyYXNoKCldKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihjcmFzaF9zZXQpLCAxKQotICAgICAgICAjIFRoZSBoYXNoIGhhcHBlbnMgdG8gYmUg
dGhlIG5hbWUgb2YgdGhlIGNsYXNzLCBidXQgc2V0cyBzdGlsbCB3b3JrOgotICAgICAgICBjcmFz
aF9zZXQgPSBzZXQoW0ZhaWx1cmVDcmFzaCgpLCAiRmFpbHVyZUNyYXNoIl0pCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKGNyYXNoX3NldCksIDIpCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2lucHV0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L3Rlc3RfaW5wdXQucHkJKHJldmlzaW9uIDkwNTI4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9pbnB1dC5weQkod29ya2luZyBjb3B5
KQpAQCAtMSw0NSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykg
MjAxMCBHYWJvciBSYXBjc2FueWkgKHJnYWJvckBpbmYudS1zemVnZWQuaHUpLCBVbml2ZXJzaXR5
IG9mIFN6ZWdlZAotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1jbGFzcyBUZXN0SW5wdXQ6Ci0gICAg
IiIiR3JvdXBzIGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdCBmb3IgZWFzeSBwYXNzaW5nIG9mIGRh
dGEuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9uYW1lLCB0aW1lb3V0KToKLSAg
ICAgICAgIiIiSG9sZHMgdGhlIGlucHV0IHBhcmFtZXRlcnMgZm9yIGEgdGVzdC4KLSAgICAgICAg
QXJnczoKLSAgICAgICAgICB0ZXN0OiBuYW1lIG9mIHRlc3QgKG5vdCBhbiBhYnNvbHV0ZSBwYXRo
ISkKLSAgICAgICAgICB0aW1lb3V0OiBUaW1lb3V0IGluIG1zZWNzIHRoZSBkcml2ZXIgc2hvdWxk
IHVzZSB3aGlsZSBydW5uaW5nIHRoZSB0ZXN0Ci0gICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYu
dGVzdF9uYW1lID0gdGVzdF9uYW1lCi0gICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKLQot
ICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJUZXN0SW5wdXQoJyVzJywg
JWQpIiAlIChzZWxmLnRlc3RfbmFtZSwgc2VsZi50aW1lb3V0KQpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVy
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weQkocmV2aXNpb24gOTA1MjgpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jl
c3VsdF93cml0ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgaW1wb3J0IGxv
Z2dpbmcKIGltcG9ydCBvcwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jhc2hsb2dz
IGltcG9ydCBDcmFzaExvZ3MKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNr
YWdlIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2Rl
bHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMKIAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19u
YW1lX18pCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X3Jlc3VsdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRzLnB5CShyZXZpc2lv
biA5MDUyOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfcmVzdWx0cy5weQkod29ya2luZyBjb3B5KQpAQCAtMSw2NCArMCwwIEBACi0j
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGNQaWNrbGUKLQotaW1wb3J0IHRlc3RfZmFpbHVyZXMK
LQotCi1jbGFzcyBUZXN0UmVzdWx0KG9iamVjdCk6Ci0gICAgIiIiRGF0YSBvYmplY3QgY29udGFp
bmluZyB0aGUgcmVzdWx0cyBvZiBhIHNpbmdsZSB0ZXN0LiIiIgotCi0gICAgQHN0YXRpY21ldGhv
ZAotICAgIGRlZiBsb2FkcyhzdHIpOgotICAgICAgICByZXR1cm4gY1BpY2tsZS5sb2FkcyhzdHIp
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9uYW1lLCBmYWlsdXJlcz1Ob25lLCB0ZXN0
X3J1bl90aW1lPU5vbmUsIGhhc19zdGRlcnI9RmFsc2UpOgotICAgICAgICBzZWxmLnRlc3RfbmFt
ZSA9IHRlc3RfbmFtZQotICAgICAgICBzZWxmLmZhaWx1cmVzID0gZmFpbHVyZXMgb3IgW10KLSAg
ICAgICAgc2VsZi50ZXN0X3J1bl90aW1lID0gdGVzdF9ydW5fdGltZSBvciAwCi0gICAgICAgIHNl
bGYuaGFzX3N0ZGVyciA9IGhhc19zdGRlcnIKLSAgICAgICAgIyBGSVhNRTogU2V0dGluZyB0aGlz
IGluIHRoZSBjb25zdHJ1Y3RvciBtYWtlcyB0aGlzIGNsYXNzIGhhcmQgdG8gbXV0YXRlLgotICAg
ICAgICBzZWxmLnR5cGUgPSB0ZXN0X2ZhaWx1cmVzLmRldGVybWluZV9yZXN1bHRfdHlwZShmYWls
dXJlcykKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gKHNl
bGYudGVzdF9uYW1lID09IG90aGVyLnRlc3RfbmFtZSBhbmQKLSAgICAgICAgICAgICAgICBzZWxm
LmZhaWx1cmVzID09IG90aGVyLmZhaWx1cmVzIGFuZAotICAgICAgICAgICAgICAgIHNlbGYudGVz
dF9ydW5fdGltZSA9PSBvdGhlci50ZXN0X3J1bl90aW1lKQotCi0gICAgZGVmIF9fbmVfXyhzZWxm
LCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBub3QgKHNlbGYgPT0gb3RoZXIpCi0KLSAgICBkZWYg
aGFzX2ZhaWx1cmVfbWF0Y2hpbmdfdHlwZXMoc2VsZiwgKmFyZ3MsICoqa2FyZ3MpOgotICAgICAg
ICBmb3IgZmFpbHVyZSBpbiBzZWxmLmZhaWx1cmVzOgotICAgICAgICAgICAgaWYgdHlwZShmYWls
dXJlKSBpbiBhcmdzOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVy
biBGYWxzZQotCi0gICAgZGVmIGR1bXBzKHNlbGYpOgotICAgICAgICByZXR1cm4gY1BpY2tsZS5k
dW1wcyhzZWxmKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0
c191bml0dGVzdC5weQkocmV2aXNpb24gOTA1MjgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHNfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTEsNTIgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB1
bml0dGVzdAotCi1mcm9tIHRlc3RfcmVzdWx0cyBpbXBvcnQgVGVzdFJlc3VsdAotCi0KLWNsYXNz
IFRlc3RSZXN1bHRzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfZGVmYXVs
dHMoc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IFRlc3RSZXN1bHQoImZvbyIpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVzdWx0LnRlc3RfbmFtZSwgJ2ZvbycpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVzdWx0LmZhaWx1cmVzLCBbXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
ZXN1bHQudGVzdF9ydW5fdGltZSwgMCkKLQotICAgIGRlZiB0ZXN0X2xvYWRzKHNlbGYpOgotICAg
ICAgICByZXN1bHQgPSBUZXN0UmVzdWx0KHRlc3RfbmFtZT0nZm9vJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmYWlsdXJlcz1bXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X3J1bl90aW1lPTEuMSkKLSAgICAgICAgcyA9IHJlc3VsdC5kdW1wcygpCi0gICAgICAgIG5l
d19yZXN1bHQgPSBUZXN0UmVzdWx0LmxvYWRzKHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShp
c2luc3RhbmNlKG5ld19yZXN1bHQsIFRlc3RSZXN1bHQpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobmV3X3Jlc3VsdCwgcmVzdWx0KQotCi0gICAgICAgICMgQWxzbyBjaGVjayB0aGF0ICE9
IGlzIGltcGxlbWVudGVkLgotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ld19yZXN1bHQgIT0g
cmVzdWx0KQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxz
L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL21vZGVscy9fX2luaXRfXy5weQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy9fX2luaXRfXy5weQkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSBAQAorIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9y
eSBmb3IgbW9kdWxlIGZpbGVzCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9tb2RlbHMvcmVzdWx0X3N1bW1hcnkucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Jlc3VsdF9zdW1tYXJ5LnB5CShyZXZpc2lv
biA5MDUyMCkJKGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvcmVzdWx0X3N1bW1hcnkucHk6OTA1MjApCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9tb2RlbHMvcmVzdWx0X3N1bW1hcnkucHkJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw5MSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIw
MTAgR2Fib3IgUmFwY3NhbnlpIChyZ2Fib3JAaW5mLnUtc3plZ2VkLmh1KSwgVW5pdmVyc2l0eSBv
ZiBTemVnZWQKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRp
c3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlJ1biBsYXlvdXQgdGVzdHMuIiIiCisK
K2ltcG9ydCBsb2dnaW5nCisKK2ltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucworCitfbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5ydW5fd2Via2l0X3Rlc3RzIikK
KworVGVzdEV4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMK
KworCitjbGFzcyBSZXN1bHRTdW1tYXJ5KG9iamVjdCk6CisgICAgIiIiQSBjbGFzcyBmb3IgcGFy
dGl0aW9uaW5nIHRoZSB0ZXN0IHJlc3VsdHMgd2UgZ2V0IGludG8gYnVja2V0cy4KKworICAgIFRo
aXMgY2xhc3MgaXMgYmFzaWNhbGx5IGEgZ2xvcmlmaWVkIHN0cnVjdCBhbmQgaXQncyBwcml2YXRl
IHRvIHRoaXMgZmlsZQorICAgIHNvIHdlIGRvbid0IGJvdGhlciB3aXRoIGFueSBpbmZvcm1hdGlv
biBoaWRpbmcuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZXhwZWN0YXRpb25zLCB0ZXN0
X2ZpbGVzKToKKyAgICAgICAgc2VsZi50b3RhbCA9IGxlbih0ZXN0X2ZpbGVzKQorICAgICAgICBz
ZWxmLnJlbWFpbmluZyA9IHNlbGYudG90YWwKKyAgICAgICAgc2VsZi5leHBlY3RhdGlvbnMgPSBl
eHBlY3RhdGlvbnMKKyAgICAgICAgc2VsZi5leHBlY3RlZCA9IDAKKyAgICAgICAgc2VsZi51bmV4
cGVjdGVkID0gMAorICAgICAgICBzZWxmLnVuZXhwZWN0ZWRfZmFpbHVyZXMgPSAwCisgICAgICAg
IHNlbGYudW5leHBlY3RlZF9jcmFzaGVzID0gMAorICAgICAgICBzZWxmLnVuZXhwZWN0ZWRfdGlt
ZW91dHMgPSAwCisgICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0YXRpb24gPSB7fQorICAgICAg
ICBzZWxmLnRlc3RzX2J5X3RpbWVsaW5lID0ge30KKyAgICAgICAgc2VsZi5yZXN1bHRzID0ge30K
KyAgICAgICAgc2VsZi51bmV4cGVjdGVkX3Jlc3VsdHMgPSB7fQorICAgICAgICBzZWxmLmZhaWx1
cmVzID0ge30KKyAgICAgICAgc2VsZi50ZXN0c19ieV9leHBlY3RhdGlvblt0ZXN0X2V4cGVjdGF0
aW9ucy5TS0lQXSA9IHNldCgpCisgICAgICAgIGZvciBleHBlY3RhdGlvbiBpbiBUZXN0RXhwZWN0
YXRpb25zLkVYUEVDVEFUSU9OUy52YWx1ZXMoKToKKyAgICAgICAgICAgIHNlbGYudGVzdHNfYnlf
ZXhwZWN0YXRpb25bZXhwZWN0YXRpb25dID0gc2V0KCkKKyAgICAgICAgZm9yIHRpbWVsaW5lIGlu
IFRlc3RFeHBlY3RhdGlvbnMuVElNRUxJTkVTLnZhbHVlcygpOgorICAgICAgICAgICAgc2VsZi50
ZXN0c19ieV90aW1lbGluZVt0aW1lbGluZV0gPSBleHBlY3RhdGlvbnMuZ2V0X3Rlc3RzX3dpdGhf
dGltZWxpbmUodGltZWxpbmUpCisKKyAgICBkZWYgYWRkKHNlbGYsIHJlc3VsdCwgZXhwZWN0ZWQp
OgorICAgICAgICAiIiJBZGQgYSBUZXN0UmVzdWx0IGludG8gdGhlIGFwcHJvcHJpYXRlIGJpbi4K
KworICAgICAgICBBcmdzOgorICAgICAgICAgIHJlc3VsdDogVGVzdFJlc3VsdAorICAgICAgICAg
IGV4cGVjdGVkOiB3aGV0aGVyIHRoZSByZXN1bHQgd2FzIHdoYXQgd2UgZXhwZWN0ZWQgaXQgdG8g
YmUuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYudGVzdHNfYnlfZXhwZWN0YXRpb25bcmVz
dWx0LnR5cGVdLmFkZChyZXN1bHQudGVzdF9uYW1lKQorICAgICAgICBzZWxmLnJlc3VsdHNbcmVz
dWx0LnRlc3RfbmFtZV0gPSByZXN1bHQKKyAgICAgICAgc2VsZi5yZW1haW5pbmcgLT0gMQorICAg
ICAgICBpZiBsZW4ocmVzdWx0LmZhaWx1cmVzKToKKyAgICAgICAgICAgIHNlbGYuZmFpbHVyZXNb
cmVzdWx0LnRlc3RfbmFtZV0gPSByZXN1bHQuZmFpbHVyZXMKKyAgICAgICAgaWYgZXhwZWN0ZWQ6
CisgICAgICAgICAgICBzZWxmLmV4cGVjdGVkICs9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHNlbGYudW5leHBlY3RlZF9yZXN1bHRzW3Jlc3VsdC50ZXN0X25hbWVdID0gcmVzdWx0Cisg
ICAgICAgICAgICBzZWxmLnVuZXhwZWN0ZWQgKz0gMQorICAgICAgICAgICAgaWYgbGVuKHJlc3Vs
dC5mYWlsdXJlcyk6CisgICAgICAgICAgICAgICAgc2VsZi51bmV4cGVjdGVkX2ZhaWx1cmVzICs9
IDEKKyAgICAgICAgICAgIGlmIHJlc3VsdC50eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLkNSQVNI
OgorICAgICAgICAgICAgICAgIHNlbGYudW5leHBlY3RlZF9jcmFzaGVzICs9IDEKKyAgICAgICAg
ICAgIGVsaWYgcmVzdWx0LnR5cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMuVElNRU9VVDoKKyAgICAg
ICAgICAgICAgICBzZWxmLnVuZXhwZWN0ZWRfdGltZW91dHMgKz0gMQpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Jlc3VsdF9zdW1tYXJ5LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy9yZXN1
bHRfc3VtbWFyeS5weQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL21vZGVscy9yZXN1bHRfc3VtbWFyeS5weQkod29ya2luZyBjb3B5KQpAQCAtMzIs
MTEgKzMyLDExIEBACiAKIGltcG9ydCBsb2dnaW5nCiAKLWltcG9ydCB0ZXN0X2V4cGVjdGF0aW9u
cworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0
aW9ucworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfZXhwZWN0YXRpb25z
IGltcG9ydCBUZXN0RXhwZWN0YXRpb25zCiAKLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnJ1bl93ZWJraXRfdGVzdHMiKQogCi1UZXN0RXhwZWN0YXRpb25z
ID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucworX2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKF9fZmlsZV9fKQogCiAKIGNsYXNzIFJlc3VsdFN1bW1hcnkob2JqZWN0KToKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0
aW9ucy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHkJKHJldmlzaW9uIDkwNTIwKQkoZnJvbSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVj
dGF0aW9ucy5weTo5MDUyMCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkx
OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiQSBoZWxw
ZXIgY2xhc3MgZm9yIHJlYWRpbmcgaW4gYW5kIGRlYWxpbmcgd2l0aCB0ZXN0cyBleHBlY3RhdGlv
bnMKK2ZvciBsYXlvdXQgdGVzdHMuCisiIiIKKworaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IGxv
Z2dpbmcKK2ltcG9ydCByZQorCitpbXBvcnQgd2Via2l0cHkudGhpcmRwYXJ0eS5zaW1wbGVqc29u
IGFzIHNpbXBsZWpzb24KKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlv
dXRfdGVzdHMubGF5b3V0X3BhY2thZ2UuIgorICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0
X2V4cGVjdGF0aW9ucyIpCisKKyMgVGVzdCBleHBlY3RhdGlvbiBhbmQgbW9kaWZpZXIgY29uc3Rh
bnRzLgorIyBGSVhNRTogcmFuZ2UoKSBzdGFydHMgd2l0aCAwIHdoaWNoIG1ha2VzIGlmIGV4cGVj
dGF0aW9uIGNoZWNrcyBoYXJkZXIKKyMgYXMgUEFTUyBpcyAwLgorKFBBU1MsIEZBSUwsIFRFWFQs
IElNQUdFLCBJTUFHRV9QTFVTX1RFWFQsIEFVRElPLCBUSU1FT1VULCBDUkFTSCwgU0tJUCwgV09O
VEZJWCwKKyBTTE9XLCBSRUJBU0VMSU5FLCBNSVNTSU5HLCBGTEFLWSwgTk9XLCBOT05FKSA9IHJh
bmdlKDE2KQorCisjIFRlc3QgZXhwZWN0YXRpb24gZmlsZSB1cGRhdGUgYWN0aW9uIGNvbnN0YW50
cworKE5PX0NIQU5HRSwgUkVNT1ZFX1RFU1QsIFJFTU9WRV9QTEFURk9STSwgQUREX1BMQVRGT1JN
U19FWENFUFRfVEhJUykgPSByYW5nZSg0KQorCisKK2RlZiByZXN1bHRfd2FzX2V4cGVjdGVkKHJl
c3VsdCwgZXhwZWN0ZWRfcmVzdWx0cywgdGVzdF9uZWVkc19yZWJhc2VsaW5pbmcsCisgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0X2lzX3NraXBwZWQpOgorICAgICIiIlJldHVybnMgd2hldGhl
ciB3ZSBnb3QgYSByZXN1bHQgd2Ugd2VyZSBleHBlY3RpbmcuCisgICAgQXJnczoKKyAgICAgICAg
cmVzdWx0OiBhY3R1YWwgcmVzdWx0IG9mIGEgdGVzdCBleGVjdXRpb24KKyAgICAgICAgZXhwZWN0
ZWRfcmVzdWx0czogc2V0IG9mIHJlc3VsdHMgbGlzdGVkIGluIHRlc3RfZXhwZWN0YXRpb25zCisg
ICAgICAgIHRlc3RfbmVlZHNfcmViYXNlbGluaW5nOiB3aGV0aGVyIHRlc3Qgd2FzIG1hcmtlZCBh
cyBSRUJBU0VMSU5FCisgICAgICAgIHRlc3RfaXNfc2tpcHBlZDogd2hldGhlciB0ZXN0IHdhcyBt
YXJrZWQgYXMgU0tJUCIiIgorICAgIGlmIHJlc3VsdCBpbiBleHBlY3RlZF9yZXN1bHRzOgorICAg
ICAgICByZXR1cm4gVHJ1ZQorICAgIGlmIHJlc3VsdCBpbiAoSU1BR0UsIFRFWFQsIElNQUdFX1BM
VVNfVEVYVCkgYW5kIEZBSUwgaW4gZXhwZWN0ZWRfcmVzdWx0czoKKyAgICAgICAgcmV0dXJuIFRy
dWUKKyAgICBpZiByZXN1bHQgPT0gTUlTU0lORyBhbmQgdGVzdF9uZWVkc19yZWJhc2VsaW5pbmc6
CisgICAgICAgIHJldHVybiBUcnVlCisgICAgaWYgcmVzdWx0ID09IFNLSVAgYW5kIHRlc3RfaXNf
c2tpcHBlZDoKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gRmFsc2UKKworCitkZWYg
cmVtb3ZlX3BpeGVsX2ZhaWx1cmVzKGV4cGVjdGVkX3Jlc3VsdHMpOgorICAgICIiIlJldHVybnMg
YSBjb3B5IG9mIHRoZSBleHBlY3RlZCByZXN1bHRzIGZvciBhIHRlc3QsIGV4Y2VwdCB0aGF0IHdl
CisgICAgZHJvcCBhbnkgcGl4ZWwgZmFpbHVyZXMgYW5kIHJldHVybiB0aGUgcmVtYWluaW5nIGV4
cGVjdGF0aW9ucy4gRm9yIGV4YW1wbGUsCisgICAgaWYgd2UncmUgbm90IHJ1bm5pbmcgcGl4ZWwg
dGVzdHMsIHRoZW4gdGVzdHMgZXhwZWN0ZWQgdG8gZmFpbCBhcyBJTUFHRQorICAgIHdpbGwgUEFT
Uy4iIiIKKyAgICBleHBlY3RlZF9yZXN1bHRzID0gZXhwZWN0ZWRfcmVzdWx0cy5jb3B5KCkKKyAg
ICBpZiBJTUFHRSBpbiBleHBlY3RlZF9yZXN1bHRzOgorICAgICAgICBleHBlY3RlZF9yZXN1bHRz
LnJlbW92ZShJTUFHRSkKKyAgICAgICAgZXhwZWN0ZWRfcmVzdWx0cy5hZGQoUEFTUykKKyAgICBp
ZiBJTUFHRV9QTFVTX1RFWFQgaW4gZXhwZWN0ZWRfcmVzdWx0czoKKyAgICAgICAgZXhwZWN0ZWRf
cmVzdWx0cy5yZW1vdmUoSU1BR0VfUExVU19URVhUKQorICAgICAgICBleHBlY3RlZF9yZXN1bHRz
LmFkZChURVhUKQorICAgIHJldHVybiBleHBlY3RlZF9yZXN1bHRzCisKKworZGVmIHN0cmlwX2Nv
bW1lbnRzKGxpbmUpOgorICAgICIiIlN0cmlwcyBjb21tZW50cyBmcm9tIGEgbGluZSBhbmQgcmV0
dXJuIE5vbmUgaWYgdGhlIGxpbmUgaXMgZW1wdHkKKyAgICBvciBlbHNlIHRoZSBjb250ZW50cyBv
ZiBsaW5lIHdpdGggbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzIHJlbW92ZWQKKyAgICBhbmQg
YWxsIG90aGVyIHdoaXRlc3BhY2UgY29sbGFwc2VkIiIiCisKKyAgICBjb21tZW50SW5kZXggPSBs
aW5lLmZpbmQoJy8vJykKKyAgICBpZiBjb21tZW50SW5kZXggaXMgLTE6CisgICAgICAgIGNvbW1l
bnRJbmRleCA9IGxlbihsaW5lKQorCisgICAgbGluZSA9IHJlLnN1YihyJ1xzKycsICcgJywgbGlu
ZVs6Y29tbWVudEluZGV4XS5zdHJpcCgpKQorICAgIGlmIGxpbmUgPT0gJyc6CisgICAgICAgIHJl
dHVybiBOb25lCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGxpbmUKKworCitjbGFzcyBQYXJz
ZUVycm9yKEV4Y2VwdGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhdGFsLCBlcnJvcnMp
OgorICAgICAgICBzZWxmLmZhdGFsID0gZmF0YWwKKyAgICAgICAgc2VsZi5lcnJvcnMgPSBlcnJv
cnMKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKG1h
cChzdHIsIHNlbGYuZXJyb3JzKSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAg
cmV0dXJuICdQYXJzZUVycm9yKGZhdGFsPSVzLCBlcnJvcnM9JXMpJyAlIChzZWxmLmZhdGFsLCBz
ZWxmLmVycm9ycykKKworCitjbGFzcyBNb2RpZmllcnNBbmRFeHBlY3RhdGlvbnM6CisgICAgIiIi
QSBob2xkZXIgZm9yIG1vZGlmaWVycyBhbmQgZXhwZWN0YXRpb25zIG9uIGEgdGVzdCB0aGF0IHNl
cmlhbGl6ZXMgdG8KKyAgICBKU09OLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGlm
aWVycywgZXhwZWN0YXRpb25zKToKKyAgICAgICAgc2VsZi5tb2RpZmllcnMgPSBtb2RpZmllcnMK
KyAgICAgICAgc2VsZi5leHBlY3RhdGlvbnMgPSBleHBlY3RhdGlvbnMKKworCitjbGFzcyBFeHBl
Y3RhdGlvbnNKc29uRW5jb2RlcihzaW1wbGVqc29uLkpTT05FbmNvZGVyKToKKyAgICAiIiJKU09O
IGVuY29kZXIgdGhhdCBjYW4gaGFuZGxlIE1vZGlmaWVyc0FuZEV4cGVjdGF0aW9ucyBvYmplY3Rz
LiIiIgorICAgIGRlZiBkZWZhdWx0KHNlbGYsIG9iaik6CisgICAgICAgICMgQSBNb2RpZmllcnNB
bmRFeHBlY3RhdGlvbnMgb2JqZWN0IGhhcyB0d28gZmllbGRzLCBlYWNoIG9mIHdoaWNoCisgICAg
ICAgICMgaXMgYSBkaWN0LiBTaW5jZSBKU09ORW5jb2RlcnMgaGFuZGxlIGFsbCB0aGUgYnVpbHRp
biB0eXBlcyBkaXJlY3RseSwKKyAgICAgICAgIyB0aGUgb25seSB0aW1lIHRoaXMgcm91dGluZSBz
aG91bGQgYmUgY2FsbGVkIGlzIG9uIHRoZSB0b3AgbGV2ZWwKKyAgICAgICAgIyBvYmplY3QgKGku
ZS4sIHRoZSBlbmNvZGVyIHNob3VsZG4ndCByZWN1cnNlKS4KKyAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2Uob2JqLCBNb2RpZmllcnNBbmRFeHBlY3RhdGlvbnMpCisgICAgICAgIHJldHVybiB7Im1v
ZGlmaWVycyI6IG9iai5tb2RpZmllcnMsCisgICAgICAgICAgICAgICAgImV4cGVjdGF0aW9ucyI6
IG9iai5leHBlY3RhdGlvbnN9CisKKworY2xhc3MgVGVzdEV4cGVjdGF0aW9uczoKKyAgICAiIiJU
ZXN0IGV4cGVjdGF0aW9ucyBjb25zaXN0IG9mIGxpbmVzIHdpdGggc3BlY2lmaWNhdGlvbnMgb2Yg
d2hhdAorICAgIHRvIGV4cGVjdCBmcm9tIGxheW91dCB0ZXN0IGNhc2VzLiBUaGUgdGVzdCBjYXNl
cyBjYW4gYmUgZGlyZWN0b3JpZXMKKyAgICBpbiB3aGljaCBjYXNlIHRoZSBleHBlY3RhdGlvbnMg
YXBwbHkgdG8gYWxsIHRlc3QgY2FzZXMgaW4gdGhhdAorICAgIGRpcmVjdG9yeSBhbmQgYW55IHN1
YmRpcmVjdG9yeS4gVGhlIGZvcm1hdCBpcyBhbG9uZyB0aGUgbGluZXMgb2Y6CisKKyAgICAgIExh
eW91dFRlc3RzL2Zhc3QvanMvZml4bWUuanMgPSBGQUlMCisgICAgICBMYXlvdXRUZXN0cy9mYXN0
L2pzL2ZsYWt5LmpzID0gRkFJTCBQQVNTCisgICAgICBMYXlvdXRUZXN0cy9mYXN0L2pzL2NyYXNo
LmpzID0gQ1JBU0ggVElNRU9VVCBGQUlMIFBBU1MKKyAgICAgIC4uLgorCisgICAgVG8gYWRkIG90
aGVyIG9wdGlvbnM6CisgICAgICBTS0lQIDogTGF5b3V0VGVzdHMvZmFzdC9qcy9uby1nb29kLmpz
ID0gVElNRU9VVCBQQVNTCisgICAgICBERUJVRyA6IExheW91dFRlc3RzL2Zhc3QvanMvbm8tZ29v
ZC5qcyA9IFRJTUVPVVQgUEFTUworICAgICAgREVCVUcgU0tJUCA6IExheW91dFRlc3RzL2Zhc3Qv
anMvbm8tZ29vZC5qcyA9IFRJTUVPVVQgUEFTUworICAgICAgTElOVVggREVCVUcgU0tJUCA6IExh
eW91dFRlc3RzL2Zhc3QvanMvbm8tZ29vZC5qcyA9IFRJTUVPVVQgUEFTUworICAgICAgTElOVVgg
V0lOIDogTGF5b3V0VGVzdHMvZmFzdC9qcy9uby1nb29kLmpzID0gVElNRU9VVCBQQVNTCisKKyAg
ICBTS0lQOiBEb2Vzbid0IHJ1biB0aGUgdGVzdC4KKyAgICBTTE9XOiBUaGUgdGVzdCB0YWtlcyBh
IGxvbmcgdGltZSB0byBydW4sIGJ1dCBkb2VzIG5vdCB0aW1lb3V0IGluZGVmaW5pdGVseS4KKyAg
ICBXT05URklYOiBGb3IgdGVzdHMgdGhhdCB3ZSBuZXZlciBpbnRlbmQgdG8gcGFzcyBvbiBhIGdp
dmVuIHBsYXRmb3JtLgorCisgICAgTm90ZXM6CisgICAgICAtQSB0ZXN0IGNhbm5vdCBiZSBib3Ro
IFNMT1cgYW5kIFRJTUVPVVQKKyAgICAgIC1BIHRlc3Qgc2hvdWxkIG9ubHkgYmUgb25lIG9mIElN
QUdFLCBURVhULCBJTUFHRStURVhULCBBVURJTywgb3IgRkFJTC4KKyAgICAgICBGQUlMIGlzIGEg
bGVnYWN5IHZhbHVlIHRoYXQgY3VycmVudGx5IG1lYW5zIGVpdGhlciBJTUFHRSwKKyAgICAgICBU
RVhULCBvciBJTUFHRStURVhULiBPbmNlIHdlIGhhdmUgZmluaXNoZWQgbWlncmF0aW5nIHRoZSBl
eHBlY3RhdGlvbnMsCisgICAgICAgd2Ugc2hvdWxkIGNoYW5nZSBGQUlMIHRvIGhhdmUgdGhlIG1l
YW5pbmcgb2YgSU1BR0UrVEVYVCBhbmQgcmVtb3ZlIHRoZQorICAgICAgIElNQUdFK1RFWFQgaWRl
bnRpZmllci4KKyAgICAgIC1BIHRlc3QgY2FuIGJlIGluY2x1ZGVkIHR3aWNlLCBidXQgbm90IHZp
YSB0aGUgc2FtZSBwYXRoLgorICAgICAgLUlmIGEgdGVzdCBpcyBpbmNsdWRlZCB0d2ljZSwgdGhl
biB0aGUgbW9yZSBwcmVjaXNlIHBhdGggd2lucy4KKyAgICAgIC1DUkFTSCB0ZXN0cyBjYW5ub3Qg
YmUgV09OVEZJWAorICAgICIiIgorCisgICAgVEVTVF9MSVNUID0gInRlc3RfZXhwZWN0YXRpb25z
LnR4dCIKKworICAgIEVYUEVDVEFUSU9OUyA9IHsncGFzcyc6IFBBU1MsCisgICAgICAgICAgICAg
ICAgICAgICdmYWlsJzogRkFJTCwKKyAgICAgICAgICAgICAgICAgICAgJ3RleHQnOiBURVhULAor
ICAgICAgICAgICAgICAgICAgICAnaW1hZ2UnOiBJTUFHRSwKKyAgICAgICAgICAgICAgICAgICAg
J2ltYWdlK3RleHQnOiBJTUFHRV9QTFVTX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICdhdWRp
byc6IEFVRElPLAorICAgICAgICAgICAgICAgICAgICAndGltZW91dCc6IFRJTUVPVVQsCisgICAg
ICAgICAgICAgICAgICAgICdjcmFzaCc6IENSQVNILAorICAgICAgICAgICAgICAgICAgICAnbWlz
c2luZyc6IE1JU1NJTkd9CisKKyAgICBFWFBFQ1RBVElPTl9ERVNDUklQVElPTlMgPSB7U0tJUDog
KCdza2lwcGVkJywgJ3NraXBwZWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UEFTUzogKCdwYXNzJywgJ3Bhc3NlcycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGQUlMOiAoJ2ZhaWx1cmUnLCAnZmFpbHVyZXMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEVYVDogKCd0ZXh0IGRpZmYgbWlzbWF0Y2gnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3RleHQgZGlmZiBtaXNtYXRjaCcpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJTUFHRTogKCdpbWFnZSBtaXNtYXRjaCcsICdpbWFnZSBtaXNt
YXRjaCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTUFHRV9QTFVTX1RFWFQ6
ICgnaW1hZ2UgYW5kIHRleHQgbWlzbWF0Y2gnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnaW1hZ2UgYW5kIHRleHQgbWlzbWF0Y2gnKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVVESU86ICgnYXVkaW8gbWlzbWF0Y2gnLCAnYXVk
aW8gbWlzbWF0Y2gnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JBU0g6ICgn
RHVtcFJlbmRlclRyZWUgY3Jhc2gnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdEdW1wUmVuZGVyVHJlZSBjcmFzaGVzJyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRJTUVPVVQ6ICgndGVzdCB0aW1lZCBvdXQnLCAndGVzdHMgdGltZWQgb3V0Jyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JU1NJTkc6ICgnbm8gZXhwZWN0ZWQg
cmVzdWx0IGZvdW5kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdubyBleHBlY3RlZCByZXN1bHRzIGZvdW5kJyl9CisKKyAgICBFWFBFQ1RBVElPTl9PUkRFUiA9
IChQQVNTLCBDUkFTSCwgVElNRU9VVCwgTUlTU0lORywgSU1BR0VfUExVU19URVhULAorICAgICAg
IFRFWFQsIElNQUdFLCBBVURJTywgRkFJTCwgU0tJUCkKKworICAgIEJVSUxEX1RZUEVTID0gKCdk
ZWJ1ZycsICdyZWxlYXNlJykKKworICAgIE1PRElGSUVSUyA9IHsnc2tpcCc6IFNLSVAsCisgICAg
ICAgICAgICAgICAgICd3b250Zml4JzogV09OVEZJWCwKKyAgICAgICAgICAgICAgICAgJ3Nsb3cn
OiBTTE9XLAorICAgICAgICAgICAgICAgICAncmViYXNlbGluZSc6IFJFQkFTRUxJTkUsCisgICAg
ICAgICAgICAgICAgICdub25lJzogTk9ORX0KKworICAgIFRJTUVMSU5FUyA9IHsnd29udGZpeCc6
IFdPTlRGSVgsCisgICAgICAgICAgICAgICAgICdub3cnOiBOT1d9CisKKyAgICBSRVNVTFRfVFlQ
RVMgPSB7J3NraXAnOiBTS0lQLAorICAgICAgICAgICAgICAgICAgICAncGFzcyc6IFBBU1MsCisg
ICAgICAgICAgICAgICAgICAgICdmYWlsJzogRkFJTCwKKyAgICAgICAgICAgICAgICAgICAgJ2Zs
YWt5JzogRkxBS1l9CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZXhwZWN0YXRpb25fZnJv
bV9zdHJpbmcoY2xzLCBzdHJpbmcpOgorICAgICAgICBhc3NlcnQoJyAnIG5vdCBpbiBzdHJpbmcp
ICAjIFRoaXMgb25seSBoYW5kbGVzIG9uZSBleHBlY3RhdGlvbiBhdCBhIHRpbWUuCisgICAgICAg
IHJldHVybiBjbHMuRVhQRUNUQVRJT05TLmdldChzdHJpbmcubG93ZXIoKSkKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBwb3J0LCB0ZXN0cywgZXhwZWN0YXRpb25zLAorICAgICAgICAgICAgICAg
ICB0ZXN0X2NvbmZpZywgaXNfbGludF9tb2RlLCBvdmVycmlkZXM9Tm9uZSk6CisgICAgICAgICIi
IkxvYWRzIGFuZCBwYXJzZXMgdGhlIHRlc3QgZXhwZWN0YXRpb25zIGdpdmVuIGluIHRoZSBzdHJp
bmcuCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBwb3J0OiBoYW5kbGUgdG8gb2JqZWN0IGNv
bnRhaW5pbmcgcGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb25hbGl0eQorICAgICAgICAgICAgdGVz
dHM6IGxpc3Qgb2YgYWxsIG9mIHRoZSB0ZXN0IGZpbGVzCisgICAgICAgICAgICBleHBlY3RhdGlv
bnM6IHRlc3QgZXhwZWN0YXRpb25zIGFzIGEgc3RyaW5nCisgICAgICAgICAgICB0ZXN0X2NvbmZp
Zzogc3BlY2lmaWMgdmFsdWVzIHRvIGNoZWNrIGFnYWluc3Qgd2hlbgorICAgICAgICAgICAgICAg
IHBhcnNpbmcgdGhlIGZpbGUgKHVzdWFsbHkgcG9ydC50ZXN0X2NvbmZpZygpLAorICAgICAgICAg
ICAgICAgIGJ1dCBtYXkgYmUgZGlmZmVyZW50IHdoZW4gbGludGluZyBvciBkb2luZyBvdGhlciB0
aGluZ3MpLgorICAgICAgICAgICAgaXNfbGludF9tb2RlOiBJZiBUcnVlLCBqdXN0IHBhcnNlIHRo
ZSBleHBlY3RhdGlvbnMgc3RyaW5nCisgICAgICAgICAgICAgICAgbG9va2luZyBmb3IgZXJyb3Jz
LgorICAgICAgICAgICAgb3ZlcnJpZGVzOiB0ZXN0IGV4cGVjdGF0aW9ucyB0aGF0IGFyZSBhbGxv
d2VkIHRvIG92ZXJyaWRlIGFueQorICAgICAgICAgICAgICAgIGVudHJpZXMgaW4gfGV4cGVjdGF0
aW9uc3wuIFRoaXMgaXMgdXNlZCBieSBjYWxsZXJzCisgICAgICAgICAgICAgICAgdGhhdCBuZWVk
IHRvIG1hbmFnZSB0d28gc2V0cyBvZiBleHBlY3RhdGlvbnMgKGUuZy4sIHVwc3RyZWFtCisgICAg
ICAgICAgICAgICAgYW5kIGRvd25zdHJlYW0gZXhwZWN0YXRpb25zKS4KKyAgICAgICAgIiIiCisg
ICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CisgICAgICAgIHNlbGYuX2ZzID0gcG9ydC5fZmlsZXN5
c3RlbQorICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSBleHBlY3RhdGlvbnMKKyAgICAgICAg
c2VsZi5fZnVsbF90ZXN0X2xpc3QgPSB0ZXN0cworICAgICAgICBzZWxmLl90ZXN0X2NvbmZpZyA9
IHRlc3RfY29uZmlnCisgICAgICAgIHNlbGYuX2lzX2xpbnRfbW9kZSA9IGlzX2xpbnRfbW9kZQor
ICAgICAgICBzZWxmLl9vdmVycmlkZXMgPSBvdmVycmlkZXMKKyAgICAgICAgc2VsZi5fZXJyb3Jz
ID0gW10KKyAgICAgICAgc2VsZi5fbm9uX2ZhdGFsX2Vycm9ycyA9IFtdCisKKyAgICAgICAgIyBN
YXBzIHJlbGF0aXZlIHRlc3QgcGF0aHMgYXMgbGlzdGVkIGluIHRoZSBleHBlY3RhdGlvbnMgZmls
ZSB0byBhCisgICAgICAgICMgbGlzdCBvZiBtYXBzIGNvbnRhaW5pbmcgbW9kaWZpZXJzIGFuZCBl
eHBlY3RhdGlvbnMgZm9yIGVhY2ggdGltZQorICAgICAgICAjIHRoZSB0ZXN0IGlzIGxpc3RlZCBp
biB0aGUgZXhwZWN0YXRpb25zIGZpbGUuIFdlIHVzZSB0aGlzIHRvCisgICAgICAgICMga2VlcCBh
IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlbnRpcmUgbGlzdCBvZiBleHBlY3RhdGlvbnMsIGV2ZW4K
KyAgICAgICAgIyBpbnZhbGlkIG9uZXMuCisgICAgICAgIHNlbGYuX2FsbF9leHBlY3RhdGlvbnMg
PSB7fQorCisgICAgICAgICMgTWFwcyBhIHRlc3QgdG8gaXRzIGxpc3Qgb2YgZXhwZWN0YXRpb25z
LgorICAgICAgICBzZWxmLl90ZXN0X3RvX2V4cGVjdGF0aW9ucyA9IHt9CisKKyAgICAgICAgIyBN
YXBzIGEgdGVzdCB0byBpdHMgbGlzdCBvZiBvcHRpb25zIChzdHJpbmcgdmFsdWVzKQorICAgICAg
ICBzZWxmLl90ZXN0X3RvX29wdGlvbnMgPSB7fQorCisgICAgICAgICMgTWFwcyBhIHRlc3QgdG8g
aXRzIGxpc3Qgb2YgbW9kaWZpZXJzOiB0aGUgY29uc3RhbnRzIGFzc29jaWF0ZWQgd2l0aAorICAg
ICAgICAjIHRoZSBvcHRpb25zIG1pbnVzIGFueSBidWcgb3IgcGxhdGZvcm0gc3RyaW5ncworICAg
ICAgICBzZWxmLl90ZXN0X3RvX21vZGlmaWVycyA9IHt9CisKKyAgICAgICAgIyBNYXBzIGEgdGVz
dCB0byB0aGUgYmFzZSBwYXRoIHRoYXQgaXQgd2FzIGxpc3RlZCB3aXRoIGluIHRoZSBsaXN0IGFu
ZAorICAgICAgICAjIHRoZSBudW1iZXIgb2YgbWF0Y2hlcyB0aGF0IGJhc2UgcGF0aCBoYWQuCisg
ICAgICAgIHNlbGYuX3Rlc3RfbGlzdF9wYXRocyA9IHt9CisKKyAgICAgICAgc2VsZi5fbW9kaWZp
ZXJfdG9fdGVzdHMgPSBzZWxmLl9kaWN0X29mX3NldHMoc2VsZi5NT0RJRklFUlMpCisgICAgICAg
IHNlbGYuX2V4cGVjdGF0aW9uX3RvX3Rlc3RzID0gc2VsZi5fZGljdF9vZl9zZXRzKHNlbGYuRVhQ
RUNUQVRJT05TKQorICAgICAgICBzZWxmLl90aW1lbGluZV90b190ZXN0cyA9IHNlbGYuX2RpY3Rf
b2Zfc2V0cyhzZWxmLlRJTUVMSU5FUykKKyAgICAgICAgc2VsZi5fcmVzdWx0X3R5cGVfdG9fdGVz
dHMgPSBzZWxmLl9kaWN0X29mX3NldHMoc2VsZi5SRVNVTFRfVFlQRVMpCisKKyAgICAgICAgc2Vs
Zi5fcmVhZChzZWxmLl9nZXRfaXRlcmFibGVfZXhwZWN0YXRpb25zKHNlbGYuX2V4cGVjdGF0aW9u
cyksCisgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQ9RmFsc2UpCisKKyAgICAg
ICAgIyBMaXN0IG9mIHRlc3RzIHRoYXQgYXJlIGluIHRoZSBvdmVycmlkZXMgZmlsZSAodXNlZCBm
b3IgY2hlY2tpbmcgZm9yCisgICAgICAgICMgZHVwbGljYXRlcyBpbnNpZGUgdGhlIG92ZXJyaWRl
cyBmaWxlIGl0c2VsZikuIE5vdGUgdGhhdCBqdXN0IGJlY2F1c2UKKyAgICAgICAgIyBhIHRlc3Qg
aXMgaW4gdGhpcyBzZXQgZG9lc24ndCBtZWFuIGl0J3MgbmVjZXNzYXJpbHkgb3ZlcnJpZGRpbmcg
YQorICAgICAgICAjIGV4cGVjdGF0aW9uIGluIHRoZSByZWd1bGFyIGV4cGVjdGF0aW9uczsgdGhl
IHRlc3QgbWlnaHQgbm90IGJlCisgICAgICAgICMgbWVudGlvbmVkIGluIHRoZSByZWd1bGFyIGV4
cGVjdGF0aW9ucyBmaWxlIGF0IGFsbC4KKyAgICAgICAgc2VsZi5fb3ZlcnJpZGRpbmdfdGVzdHMg
PSBzZXQoKQorCisgICAgICAgIGlmIG92ZXJyaWRlczoKKyAgICAgICAgICAgIHNlbGYuX3JlYWQo
c2VsZi5fZ2V0X2l0ZXJhYmxlX2V4cGVjdGF0aW9ucyhzZWxmLl9vdmVycmlkZXMpLAorICAgICAg
ICAgICAgICAgICAgICAgICBvdmVycmlkZXNfYWxsb3dlZD1UcnVlKQorCisgICAgICAgIHNlbGYu
X2hhbmRsZV9hbnlfcmVhZF9lcnJvcnMoKQorICAgICAgICBzZWxmLl9wcm9jZXNzX3Rlc3RzX3dp
dGhvdXRfZXhwZWN0YXRpb25zKCkKKworICAgICMgVE9ETyhvamFuKTogQWxsb3cgZm9yIHJlbW92
aW5nIHNraXBwZWQgdGVzdHMgd2hlbiBnZXR0aW5nIHRoZSBsaXN0IG9mCisgICAgIyB0ZXN0cyB0
byBydW4sIGJ1dCBub3Qgd2hlbiBnZXR0aW5nIG1ldHJpY3MuCisKKyAgICBkZWYgZ2V0X3JlYmFz
ZWxpbmluZ19mYWlsdXJlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChzZWxmLmdldF90ZXN0X3Nl
dChSRUJBU0VMSU5FLCBGQUlMKSB8CisgICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVzdF9zZXQo
UkVCQVNFTElORSwgSU1BR0UpIHwKKyAgICAgICAgICAgICAgICBzZWxmLmdldF90ZXN0X3NldChS
RUJBU0VMSU5FLCBURVhUKSB8CisgICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVzdF9zZXQoUkVC
QVNFTElORSwgSU1BR0VfUExVU19URVhUKSB8CisgICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVz
dF9zZXQoUkVCQVNFTElORSwgQVVESU8pKQorCisgICAgZGVmIGdldF9leHBlY3RhdGlvbnNfc3Ry
aW5nKHNlbGYsIHRlc3QpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBleHBlY3RhdG9ucyBmb3Ig
dGhlIGdpdmVuIHRlc3QgYXMgYW4gdXBwZXJjYXNlIHN0cmluZy4KKyAgICAgICAgSWYgdGhlcmUg
YXJlIG5vIGV4cGVjdGF0aW9ucyBmb3IgdGhlIHRlc3QsIHRoZW4gIlBBU1MiIGlzIHJldHVybmVk
LiIiIgorICAgICAgICBleHBlY3RhdGlvbnMgPSBzZWxmLmdldF9leHBlY3RhdGlvbnModGVzdCkK
KyAgICAgICAgcmV0dmFsID0gW10KKworICAgICAgICBmb3IgZXhwZWN0YXRpb24gaW4gZXhwZWN0
YXRpb25zOgorICAgICAgICAgICAgcmV0dmFsLmFwcGVuZChzZWxmLmV4cGVjdGF0aW9uX3RvX3N0
cmluZyhleHBlY3RhdGlvbikpCisKKyAgICAgICAgcmV0dXJuICIgIi5qb2luKHJldHZhbCkKKwor
ICAgIGRlZiBleHBlY3RhdGlvbl90b19zdHJpbmcoc2VsZiwgZXhwZWN0YXRpb24pOgorICAgICAg
ICAiIiJSZXR1cm4gdGhlIHVwcGVyY2FzZWQgc3RyaW5nIGVxdWl2YWxlbnQgb2YgYSBnaXZlbiBl
eHBlY3RhdGlvbi4iIiIKKyAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5FWFBFQ1RBVElPTlMuaXRl
bXMoKToKKyAgICAgICAgICAgIGlmIGl0ZW1bMV0gPT0gZXhwZWN0YXRpb246CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGl0ZW1bMF0udXBwZXIoKQorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGV4
cGVjdGF0aW9uKQorCisgICAgZGVmIG1hdGNoZXNfYW5fZXhwZWN0ZWRfcmVzdWx0KHNlbGYsIHRl
c3QsIHJlc3VsdCwgcGl4ZWxfdGVzdHNfYXJlX2VuYWJsZWQpOgorICAgICAgICBleHBlY3RlZF9y
ZXN1bHRzID0gc2VsZi5nZXRfZXhwZWN0YXRpb25zKHRlc3QpCisgICAgICAgIGlmIG5vdCBwaXhl
bF90ZXN0c19hcmVfZW5hYmxlZDoKKyAgICAgICAgICAgIGV4cGVjdGVkX3Jlc3VsdHMgPSByZW1v
dmVfcGl4ZWxfZmFpbHVyZXMoZXhwZWN0ZWRfcmVzdWx0cykKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dF93YXNfZXhwZWN0ZWQocmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleHBlY3RlZF9yZXN1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLmlzX3JlYmFzZWxpbmluZyh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5oYXNfbW9kaWZpZXIodGVzdCwgU0tJUCkpCisKKyAgICBkZWYgaXNfcmViYXNl
bGluaW5nKHNlbGYsIHRlc3QpOgorICAgICAgICByZXR1cm4gc2VsZi5oYXNfbW9kaWZpZXIodGVz
dCwgUkVCQVNFTElORSkKKworICAgIGRlZiBfaGFuZGxlX2FueV9yZWFkX2Vycm9ycyhzZWxmKToK
KyAgICAgICAgaWYgbGVuKHNlbGYuX2Vycm9ycykgb3IgbGVuKHNlbGYuX25vbl9mYXRhbF9lcnJv
cnMpOgorICAgICAgICAgICAgX2xvZy5lcnJvcigiRkFJTFVSRVMgRk9SICVzIiAlIHN0cihzZWxm
Ll90ZXN0X2NvbmZpZykpCisKKyAgICAgICAgICAgIGZvciBlcnJvciBpbiBzZWxmLl9lcnJvcnM6
CisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcihlcnJvcikKKyAgICAgICAgICAgIGZvciBlcnJv
ciBpbiBzZWxmLl9ub25fZmF0YWxfZXJyb3JzOgorICAgICAgICAgICAgICAgIF9sb2cuZXJyb3Io
ZXJyb3IpCisKKyAgICAgICAgICAgIGlmIGxlbihzZWxmLl9lcnJvcnMpOgorICAgICAgICAgICAg
ICAgIHJhaXNlIFBhcnNlRXJyb3IoZmF0YWw9VHJ1ZSwgZXJyb3JzPXNlbGYuX2Vycm9ycykKKyAg
ICAgICAgICAgIGlmIGxlbihzZWxmLl9ub25fZmF0YWxfZXJyb3JzKSBhbmQgc2VsZi5faXNfbGlu
dF9tb2RlOgorICAgICAgICAgICAgICAgIHJhaXNlIFBhcnNlRXJyb3IoZmF0YWw9RmFsc2UsIGVy
cm9ycz1zZWxmLl9ub25fZmF0YWxfZXJyb3JzKQorCisgICAgZGVmIF9wcm9jZXNzX3Rlc3RzX3dp
dGhvdXRfZXhwZWN0YXRpb25zKHNlbGYpOgorICAgICAgICBleHBlY3RhdGlvbnMgPSBzZXQoW1BB
U1NdKQorICAgICAgICBvcHRpb25zID0gW10KKyAgICAgICAgbW9kaWZpZXJzID0gW10KKyAgICAg
ICAgaWYgc2VsZi5fZnVsbF90ZXN0X2xpc3Q6CisgICAgICAgICAgICBmb3IgdGVzdCBpbiBzZWxm
Ll9mdWxsX3Rlc3RfbGlzdDoKKyAgICAgICAgICAgICAgICBpZiBub3QgdGVzdCBpbiBzZWxmLl90
ZXN0X2xpc3RfcGF0aHM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2FkZF90ZXN0KHRlc3Qs
IG1vZGlmaWVycywgZXhwZWN0YXRpb25zLCBvcHRpb25zLCBvdmVycmlkZXNfYWxsb3dlZD1GYWxz
ZSkKKworICAgIGRlZiBfZGljdF9vZl9zZXRzKHNlbGYsIHN0cmluZ3NfdG9fY29uc3RhbnRzKToK
KyAgICAgICAgIiIiVGFrZXMgYSBkaWN0IG9mIHN0cmluZ3MtPmNvbnN0YW50cyBhbmQgcmV0dXJu
cyBhIGRpY3QgbWFwcGluZworICAgICAgICBlYWNoIGNvbnN0YW50IHRvIGFuIGVtcHR5IHNldC4i
IiIKKyAgICAgICAgZCA9IHt9CisgICAgICAgIGZvciBjIGluIHN0cmluZ3NfdG9fY29uc3RhbnRz
LnZhbHVlcygpOgorICAgICAgICAgICAgZFtjXSA9IHNldCgpCisgICAgICAgIHJldHVybiBkCisK
KyAgICBkZWYgX2dldF9pdGVyYWJsZV9leHBlY3RhdGlvbnMoc2VsZiwgZXhwZWN0YXRpb25zX3N0
cik6CisgICAgICAgICIiIlJldHVybnMgYW4gb2JqZWN0IHRoYXQgY2FuIGJlIGl0ZXJhdGVkIG92
ZXIuIEFsbG93cyBmb3Igbm90IGNhcmluZworICAgICAgICBhYm91dCB3aGV0aGVyIHdlJ3JlIGl0
ZXJhdGluZyBvdmVyIGEgZmlsZSBvciBhIG5ldy1saW5lIHNlcGFyYXRlZAorICAgICAgICBzdHJp
bmcuIiIiCisgICAgICAgIGl0ZXJhYmxlID0gW3ggKyAiXG4iIGZvciB4IGluIGV4cGVjdGF0aW9u
c19zdHIuc3BsaXQoIlxuIildCisgICAgICAgICMgU3RyaXAgZmluYWwgZW50cnkgaWYgaXQncyBl
bXB0eSB0byBhdm9pZCBhZGRlZCBpbiBhbiBleHRyYQorICAgICAgICAjIG5ld2xpbmUuCisgICAg
ICAgIGlmIGl0ZXJhYmxlWy0xXSA9PSAiXG4iOgorICAgICAgICAgICAgcmV0dXJuIGl0ZXJhYmxl
WzotMV0KKyAgICAgICAgcmV0dXJuIGl0ZXJhYmxlCisKKyAgICBkZWYgZ2V0X3Rlc3Rfc2V0KHNl
bGYsIG1vZGlmaWVyLCBleHBlY3RhdGlvbj1Ob25lLCBpbmNsdWRlX3NraXBzPVRydWUpOgorICAg
ICAgICBpZiBleHBlY3RhdGlvbiBpcyBOb25lOgorICAgICAgICAgICAgdGVzdHMgPSBzZWxmLl9t
b2RpZmllcl90b190ZXN0c1ttb2RpZmllcl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRl
c3RzID0gKHNlbGYuX2V4cGVjdGF0aW9uX3RvX3Rlc3RzW2V4cGVjdGF0aW9uXSAmCisgICAgICAg
ICAgICAgICAgc2VsZi5fbW9kaWZpZXJfdG9fdGVzdHNbbW9kaWZpZXJdKQorCisgICAgICAgIGlm
IG5vdCBpbmNsdWRlX3NraXBzOgorICAgICAgICAgICAgdGVzdHMgPSB0ZXN0cyAtIHNlbGYuZ2V0
X3Rlc3Rfc2V0KFNLSVAsIGV4cGVjdGF0aW9uKQorCisgICAgICAgIHJldHVybiB0ZXN0cworCisg
ICAgZGVmIGdldF90ZXN0c193aXRoX3Jlc3VsdF90eXBlKHNlbGYsIHJlc3VsdF90eXBlKToKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3Jlc3VsdF90eXBlX3RvX3Rlc3RzW3Jlc3VsdF90eXBlXQorCisg
ICAgZGVmIGdldF90ZXN0c193aXRoX3RpbWVsaW5lKHNlbGYsIHRpbWVsaW5lKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuX3RpbWVsaW5lX3RvX3Rlc3RzW3RpbWVsaW5lXQorCisgICAgZGVmIGdldF9v
cHRpb25zKHNlbGYsIHRlc3QpOgorICAgICAgICAiIiJUaGlzIHJldHVybnMgdGhlIGVudGlyZSBz
ZXQgb2Ygb3B0aW9ucyBmb3IgdGhlIGdpdmVuIHRlc3QKKyAgICAgICAgKHRoZSBtb2RpZmllcnMg
cGx1cyB0aGUgQlVHWFhYWCBpZGVudGlmaWVyKS4gVGhpcyBpcyB1c2VkIGJ5IHRoZQorICAgICAg
ICBMVFRGIGRhc2hib2FyZC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfdG9fb3B0aW9u
c1t0ZXN0XQorCisgICAgZGVmIGhhc19tb2RpZmllcihzZWxmLCB0ZXN0LCBtb2RpZmllcik6Cisg
ICAgICAgIHJldHVybiB0ZXN0IGluIHNlbGYuX21vZGlmaWVyX3RvX3Rlc3RzW21vZGlmaWVyXQor
CisgICAgZGVmIGdldF9leHBlY3RhdGlvbnMoc2VsZiwgdGVzdCk6CisgICAgICAgIHJldHVybiBz
ZWxmLl90ZXN0X3RvX2V4cGVjdGF0aW9uc1t0ZXN0XQorCisgICAgZGVmIGdldF9leHBlY3RhdGlv
bnNfanNvbl9mb3JfYWxsX3BsYXRmb3JtcyhzZWxmKToKKyAgICAgICAgIyBTcGVjaWZ5IHNlcGFy
YXRvcnMgaW4gb3JkZXIgdG8gZ2V0IGNvbXBhY3QgZW5jb2RpbmcuCisgICAgICAgIHJldHVybiBF
eHBlY3RhdGlvbnNKc29uRW5jb2RlcihzZXBhcmF0b3JzPSgnLCcsICc6JykpLmVuY29kZSgKKyAg
ICAgICAgICAgIHNlbGYuX2FsbF9leHBlY3RhdGlvbnMpCisKKyAgICBkZWYgZ2V0X25vbl9mYXRh
bF9lcnJvcnMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9ub25fZmF0YWxfZXJyb3JzCisK
KyAgICBkZWYgcmVtb3ZlX3JlYmFzZWxpbmVkX3Rlc3RzKHNlbGYsIHRlc3RzKToKKyAgICAgICAg
IiIiUmV0dXJucyBhIGNvcHkgb2YgdGhlIGV4cGVjdGF0aW9ucyB3aXRoIHRoZSB0ZXN0cyByZW1v
dmVkLiIiIgorICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGZvciAobGluZW5vLCBsaW5lKSBp
biBlbnVtZXJhdGUoc2VsZi5fZ2V0X2l0ZXJhYmxlX2V4cGVjdGF0aW9ucyhzZWxmLl9leHBlY3Rh
dGlvbnMpKToKKyAgICAgICAgICAgIHRlc3QsIG9wdGlvbnMsIF8gPSBzZWxmLnBhcnNlX2V4cGVj
dGF0aW9uc19saW5lKGxpbmUsIGxpbmVubykKKyAgICAgICAgICAgIGlmIG5vdCAodGVzdCBhbmQg
dGVzdCBpbiB0ZXN0cyBhbmQgJ3JlYmFzZWxpbmUnIGluIG9wdGlvbnMpOgorICAgICAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZChsaW5lKQorICAgICAgICByZXR1cm4gJycuam9pbihsaW5lcykKKwor
ICAgIGRlZiBwYXJzZV9leHBlY3RhdGlvbnNfbGluZShzZWxmLCBsaW5lLCBsaW5lbm8pOgorICAg
ICAgICAiIiJQYXJzZXMgYSBsaW5lIGZyb20gdGVzdF9leHBlY3RhdGlvbnMudHh0IGFuZCByZXR1
cm5zIGEgdHVwbGUKKyAgICAgICAgd2l0aCB0aGUgdGVzdCBwYXRoLCBvcHRpb25zIGFzIGEgbGlz
dCwgZXhwZWN0YXRpb25zIGFzIGEgbGlzdC4iIiIKKyAgICAgICAgbGluZSA9IHN0cmlwX2NvbW1l
bnRzKGxpbmUpCisgICAgICAgIGlmIG5vdCBsaW5lOgorICAgICAgICAgICAgcmV0dXJuIChOb25l
LCBOb25lLCBOb25lKQorCisgICAgICAgIG9wdGlvbnMgPSBbXQorICAgICAgICBpZiBsaW5lLmZp
bmQoIjoiKSBpcyAtMToKKyAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sICJNaXNz
aW5nIGEgJzonIiwgbGluZSkKKyAgICAgICAgICAgIHJldHVybiAoTm9uZSwgTm9uZSwgTm9uZSkK
KworICAgICAgICBwYXJ0cyA9IGxpbmUuc3BsaXQoJzonKQorCisgICAgICAgICMgRklYTUU6IHZl
cmlmeSB0aGF0IHRoZXJlIGlzIGV4YWN0bHkgb25lIGNvbG9uIGluIHRoZSBsaW5lLgorCisgICAg
ICAgIG9wdGlvbnMgPSBzZWxmLl9nZXRfb3B0aW9uc19saXN0KHBhcnRzWzBdKQorICAgICAgICB0
ZXN0X2FuZF9leHBlY3RhdGlvbiA9IHBhcnRzWzFdLnNwbGl0KCc9JykKKyAgICAgICAgdGVzdCA9
IHRlc3RfYW5kX2V4cGVjdGF0aW9uWzBdLnN0cmlwKCkKKyAgICAgICAgaWYgKGxlbih0ZXN0X2Fu
ZF9leHBlY3RhdGlvbikgaXMgbm90IDIpOgorICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxp
bmVubywgIk1pc3NpbmcgZXhwZWN0YXRpb25zLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0X2FuZF9leHBlY3RhdGlvbikKKyAgICAgICAgICAgIGV4cGVjdGF0aW9ucyA9IE5vbmUK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4cGVjdGF0aW9ucyA9IHNlbGYuX2dldF9vcHRp
b25zX2xpc3QodGVzdF9hbmRfZXhwZWN0YXRpb25bMV0pCisKKyAgICAgICAgcmV0dXJuICh0ZXN0
LCBvcHRpb25zLCBleHBlY3RhdGlvbnMpCisKKyAgICBkZWYgX2FkZF90b19hbGxfZXhwZWN0YXRp
b25zKHNlbGYsIHRlc3QsIG9wdGlvbnMsIGV4cGVjdGF0aW9ucyk6CisgICAgICAgIGlmIG5vdCB0
ZXN0IGluIHNlbGYuX2FsbF9leHBlY3RhdGlvbnM6CisgICAgICAgICAgICBzZWxmLl9hbGxfZXhw
ZWN0YXRpb25zW3Rlc3RdID0gW10KKyAgICAgICAgc2VsZi5fYWxsX2V4cGVjdGF0aW9uc1t0ZXN0
XS5hcHBlbmQoCisgICAgICAgICAgICBNb2RpZmllcnNBbmRFeHBlY3RhdGlvbnMob3B0aW9ucywg
ZXhwZWN0YXRpb25zKSkKKworICAgIGRlZiBfcmVhZChzZWxmLCBleHBlY3RhdGlvbnMsIG92ZXJy
aWRlc19hbGxvd2VkKToKKyAgICAgICAgIiIiRm9yIGVhY2ggdGVzdCBpbiBhbiBleHBlY3RhdGlv
bnMgaXRlcmFibGUsIGdlbmVyYXRlIHRoZQorICAgICAgICBleHBlY3RhdGlvbnMgZm9yIGl0LiIi
IgorICAgICAgICBsaW5lbm8gPSAwCisgICAgICAgIG1hdGNoZXIgPSBNb2RpZmllck1hdGNoZXIo
c2VsZi5fdGVzdF9jb25maWcpCisgICAgICAgIGZvciBsaW5lIGluIGV4cGVjdGF0aW9uczoKKyAg
ICAgICAgICAgIGxpbmVubyArPSAxCisgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2xpbmUobGlu
ZSwgbGluZW5vLCBtYXRjaGVyLCBvdmVycmlkZXNfYWxsb3dlZCkKKworICAgIGRlZiBfcHJvY2Vz
c19saW5lKHNlbGYsIGxpbmUsIGxpbmVubywgbWF0Y2hlciwgb3ZlcnJpZGVzX2FsbG93ZWQpOgor
ICAgICAgICB0ZXN0X2xpc3RfcGF0aCwgb3B0aW9ucywgZXhwZWN0YXRpb25zID0gXAorICAgICAg
ICAgICAgc2VsZi5wYXJzZV9leHBlY3RhdGlvbnNfbGluZShsaW5lLCBsaW5lbm8pCisgICAgICAg
IGlmIG5vdCBleHBlY3RhdGlvbnM6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxm
Ll9hZGRfdG9fYWxsX2V4cGVjdGF0aW9ucyh0ZXN0X2xpc3RfcGF0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICIuam9pbihvcHRpb25zKS51cHBlcigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIi5qb2luKGV4cGVjdGF0aW9u
cykudXBwZXIoKSkKKworICAgICAgICBudW1fbWF0Y2hlcyA9IHNlbGYuX2NoZWNrX29wdGlvbnMo
bWF0Y2hlciwgb3B0aW9ucywgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCisgICAgICAgIGlmIG51bV9tYXRjaGVzID09IE1v
ZGlmaWVyTWF0Y2hlci5OT19NQVRDSDoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGV4
cGVjdGF0aW9ucyA9IHNlbGYuX3BhcnNlX2V4cGVjdGF0aW9ucyhleHBlY3RhdGlvbnMsIGxpbmVu
bywKKyAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQorCisgICAgICAgIHNlbGYuX2NoZWNrX29w
dGlvbnNfYWdhaW5zdF9leHBlY3RhdGlvbnMob3B0aW9ucywgZXhwZWN0YXRpb25zLAorICAgICAg
ICAgICAgbGluZW5vLCB0ZXN0X2xpc3RfcGF0aCkKKworICAgICAgICBpZiBzZWxmLl9jaGVja19w
YXRoX2RvZXNfbm90X2V4aXN0KGxpbmVubywgdGVzdF9saXN0X3BhdGgpOgorICAgICAgICAgICAg
cmV0dXJuCisKKyAgICAgICAgaWYgbm90IHNlbGYuX2Z1bGxfdGVzdF9saXN0OgorICAgICAgICAg
ICAgdGVzdHMgPSBbdGVzdF9saXN0X3BhdGhdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0
ZXN0cyA9IHNlbGYuX2V4cGFuZF90ZXN0cyh0ZXN0X2xpc3RfcGF0aCkKKworICAgICAgICBtb2Rp
ZmllcnMgPSBbbyBmb3IgbyBpbiBvcHRpb25zIGlmIG8gaW4gc2VsZi5NT0RJRklFUlNdCisgICAg
ICAgIHNlbGYuX2FkZF90ZXN0cyh0ZXN0cywgZXhwZWN0YXRpb25zLCB0ZXN0X2xpc3RfcGF0aCwg
bGluZW5vLCBtb2RpZmllcnMsIG51bV9tYXRjaGVzLCBvcHRpb25zLCBvdmVycmlkZXNfYWxsb3dl
ZCkKKworICAgIGRlZiBfZ2V0X29wdGlvbnNfbGlzdChzZWxmLCBsaXN0U3RyaW5nKToKKyAgICAg
ICAgcmV0dXJuIFtwYXJ0LnN0cmlwKCkubG93ZXIoKSBmb3IgcGFydCBpbiBsaXN0U3RyaW5nLnN0
cmlwKCkuc3BsaXQoJyAnKV0KKworICAgIGRlZiBfcGFyc2VfZXhwZWN0YXRpb25zKHNlbGYsIGV4
cGVjdGF0aW9ucywgbGluZW5vLCB0ZXN0X2xpc3RfcGF0aCk6CisgICAgICAgIHJlc3VsdCA9IHNl
dCgpCisgICAgICAgIGZvciBwYXJ0IGluIGV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIGV4cGVj
dGF0aW9uID0gVGVzdEV4cGVjdGF0aW9ucy5leHBlY3RhdGlvbl9mcm9tX3N0cmluZyhwYXJ0KQor
ICAgICAgICAgICAgaWYgZXhwZWN0YXRpb24gaXMgTm9uZTogICMgQ2FyZWZ1bCwgUEFTUyBpcyBj
dXJyZW50bHkgMC4KKyAgICAgICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLCAnVW5z
dXBwb3J0ZWQgZXhwZWN0YXRpb246ICVzJyAlIHBhcnQsIHRlc3RfbGlzdF9wYXRoKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZXN1bHQuYWRkKGV4cGVjdGF0aW9uKQor
ICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgX2NoZWNrX29wdGlvbnMoc2VsZiwgbWF0
Y2hlciwgb3B0aW9ucywgbGluZW5vLCB0ZXN0X2xpc3RfcGF0aCk6CisgICAgICAgIG1hdGNoX3Jl
c3VsdCA9IHNlbGYuX2NoZWNrX3N5bnRheChtYXRjaGVyLCBvcHRpb25zLCBsaW5lbm8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKKyAg
ICAgICAgc2VsZi5fY2hlY2tfc2VtYW50aWNzKG9wdGlvbnMsIGxpbmVubywgdGVzdF9saXN0X3Bh
dGgpCisgICAgICAgIHJldHVybiBtYXRjaF9yZXN1bHQubnVtX21hdGNoZXMKKworICAgIGRlZiBf
Y2hlY2tfc3ludGF4KHNlbGYsIG1hdGNoZXIsIG9wdGlvbnMsIGxpbmVubywgdGVzdF9saXN0X3Bh
dGgpOgorICAgICAgICBtYXRjaF9yZXN1bHQgPSBtYXRjaGVyLm1hdGNoKG9wdGlvbnMpCisgICAg
ICAgIGZvciBlcnJvciBpbiBtYXRjaF9yZXN1bHQuZXJyb3JzOgorICAgICAgICAgICAgc2VsZi5f
YWRkX2Vycm9yKGxpbmVubywgZXJyb3IsIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICBmb3Igd2Fy
bmluZyBpbiBtYXRjaF9yZXN1bHQud2FybmluZ3M6CisgICAgICAgICAgICBzZWxmLl9sb2dfbm9u
X2ZhdGFsX2Vycm9yKGxpbmVubywgd2FybmluZywgdGVzdF9saXN0X3BhdGgpCisgICAgICAgIHJl
dHVybiBtYXRjaF9yZXN1bHQKKworICAgIGRlZiBfY2hlY2tfc2VtYW50aWNzKHNlbGYsIG9wdGlv
bnMsIGxpbmVubywgdGVzdF9saXN0X3BhdGgpOgorICAgICAgICBoYXNfd29udGZpeCA9ICd3b250
Zml4JyBpbiBvcHRpb25zCisgICAgICAgIGhhc19idWcgPSBGYWxzZQorICAgICAgICBmb3Igb3B0
IGluIG9wdGlvbnM6CisgICAgICAgICAgICBpZiBvcHQuc3RhcnRzd2l0aCgnYnVnJyk6CisgICAg
ICAgICAgICAgICAgaGFzX2J1ZyA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiByZS5tYXRjaCgn
YnVnXGQrJywgb3B0KToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVu
bywKKyAgICAgICAgICAgICAgICAgICAgICAgICdCVUdcZCsgaXMgbm90IGFsbG93ZWQsIG11c3Qg
YmUgb25lIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdCVUdDUlxkKywgQlVHV0tcZCss
IEJVR1Y4X1xkKywgJworICAgICAgICAgICAgICAgICAgICAgICAgJ29yIGEgbm9uLW51bWVyaWMg
YnVnIGlkZW50aWZpZXIuJywgdGVzdF9saXN0X3BhdGgpCisKKyAgICAgICAgaWYgbm90IGhhc19i
dWcgYW5kIG5vdCBoYXNfd29udGZpeDoKKyAgICAgICAgICAgIHNlbGYuX2xvZ19ub25fZmF0YWxf
ZXJyb3IobGluZW5vLCAnVGVzdCBsYWNrcyBCVUcgbW9kaWZpZXIuJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCisKKyAgICAgICAgaWYgc2Vs
Zi5faXNfbGludF9tb2RlIGFuZCAncmViYXNlbGluZScgaW4gb3B0aW9uczoKKyAgICAgICAgICAg
IHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sCisgICAgICAgICAgICAgICAgJ1JFQkFTRUxJTkUgc2hv
dWxkIG9ubHkgYmUgdXNlZCBmb3IgcnVubmluZyByZWJhc2VsaW5lLnB5LiAnCisgICAgICAgICAg
ICAgICAgJ0Nhbm5vdCBiZSBjaGVja2VkIGluLicsIHRlc3RfbGlzdF9wYXRoKQorCisgICAgZGVm
IF9jaGVja19vcHRpb25zX2FnYWluc3RfZXhwZWN0YXRpb25zKHNlbGYsIG9wdGlvbnMsIGV4cGVj
dGF0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlu
ZW5vLCB0ZXN0X2xpc3RfcGF0aCk6CisgICAgICAgIGlmICdzbG93JyBpbiBvcHRpb25zIGFuZCBU
SU1FT1VUIGluIGV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5l
bm8sCisgICAgICAgICAgICAgICAgJ0EgdGVzdCBjYW4gbm90IGJlIGJvdGggU0xPVyBhbmQgVElN
RU9VVC4gSWYgaXQgdGltZXMgb3V0ICcKKyAgICAgICAgICAgICAgICAnaW5kZWZpbml0ZWx5LCB0
aGVuIGl0IHNob3VsZCBiZSBqdXN0IFRJTUVPVVQuJywgdGVzdF9saXN0X3BhdGgpCisKKyAgICBk
ZWYgX2NoZWNrX3BhdGhfZG9lc19ub3RfZXhpc3Qoc2VsZiwgbGluZW5vLCB0ZXN0X2xpc3RfcGF0
aCk6CisgICAgICAgICMgV2ViS2l0J3Mgd2F5IG9mIHNraXBwaW5nIHRlc3RzIGlzIHRvIGFkZCBh
IC1kaXNhYmxlZCBzdWZmaXguCisgICAgICAgICAgICAjIFNvIHdlIHNob3VsZCBjb25zaWRlciB0
aGUgcGF0aCBleGlzdGluZyBpZiB0aGUgcGF0aCBvciB0aGUKKyAgICAgICAgIyAtZGlzYWJsZWQg
dmVyc2lvbiBleGlzdHMuCisgICAgICAgIGlmIChub3Qgc2VsZi5fcG9ydC50ZXN0X2V4aXN0cyh0
ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgICAgIGFuZCBub3Qgc2VsZi5fcG9ydC50ZXN0X2V4aXN0
cyh0ZXN0X2xpc3RfcGF0aCArICctZGlzYWJsZWQnKSk6CisgICAgICAgICAgICAjIExvZyBhIG5v
biBmYXRhbCBlcnJvciBoZXJlIHNpbmNlIHlvdSBoaXQgdGhpcyBjYXNlIGFueQorICAgICAgICAg
ICAgIyB0aW1lIHlvdSB1cGRhdGUgdGVzdF9leHBlY3RhdGlvbnMudHh0IHdpdGhvdXQgc3luY2lu
ZworICAgICAgICAgICAgIyB0aGUgTGF5b3V0VGVzdHMgZGlyZWN0b3J5CisgICAgICAgICAgICBz
ZWxmLl9sb2dfbm9uX2ZhdGFsX2Vycm9yKGxpbmVubywgJ1BhdGggZG9lcyBub3QgZXhpc3QuJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCisg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBf
ZXhwYW5kX3Rlc3RzKHNlbGYsIHRlc3RfbGlzdF9wYXRoKToKKyAgICAgICAgIiIiQ29udmVydCB0
aGUgdGVzdCBzcGVjaWZpY2F0aW9uIHRvIGFuIGFic29sdXRlLCBub3JtYWxpemVkCisgICAgICAg
IHBhdGggYW5kIG1ha2Ugc3VyZSBkaXJlY3RvcmllcyBlbmQgd2l0aCB0aGUgT1MgcGF0aCBzZXBh
cmF0b3IuIiIiCisgICAgICAgICMgRklYTUU6IGZ1bGxfdGVzdF9saXN0IGNhbiBxdWlja2x5IGNv
bnRhaW4gYSBiaWcgYW1vdW50IG9mCisgICAgICAgICMgZWxlbWVudHMuIFdlIHNob3VsZCBjb25z
aWRlciBhdCBzb21lIHBvaW50IHRvIHVzZSBhIG1vcmUKKyAgICAgICAgIyBlZmZpY2llbnQgc3Ry
dWN0dXJlIGluc3RlYWQgb2YgYSBsaXN0LiBNYXliZSBhIGRpY3Rpb25hcnkgb2YKKyAgICAgICAg
IyBsaXN0cyB0byByZXByZXNlbnQgdGhlIHRyZWUgb2YgdGVzdHMsIGxlYXZlcyBiZWluZyB0ZXN0
CisgICAgICAgICMgZmlsZXMgYW5kIG5vZGVzIGJlaW5nIGNhdGVnb3JpZXMuCisKKyAgICAgICAg
aWYgc2VsZi5fcG9ydC50ZXN0X2lzZGlyKHRlc3RfbGlzdF9wYXRoKToKKyAgICAgICAgICAgICMg
dGhpcyBpcyBhIHRlc3QgY2F0ZWdvcnksIHJldHVybiBhbGwgdGhlIHRlc3RzIG9mIHRoZSBjYXRl
Z29yeS4KKyAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoID0gc2VsZi5fcG9ydC5ub3JtYWxpemVf
dGVzdF9uYW1lKHRlc3RfbGlzdF9wYXRoKQorCisgICAgICAgICAgICByZXR1cm4gW3Rlc3QgZm9y
IHRlc3QgaW4gc2VsZi5fZnVsbF90ZXN0X2xpc3QgaWYgdGVzdC5zdGFydHN3aXRoKHRlc3RfbGlz
dF9wYXRoKV0KKworICAgICAgICAjIHRoaXMgaXMgYSB0ZXN0IGZpbGUsIGRvIGEgcXVpY2sgY2hl
Y2sgaWYgaXQncyBpbiB0aGUKKyAgICAgICAgIyBmdWxsIHRlc3Qgc3VpdGUuCisgICAgICAgIHJl
c3VsdCA9IFtdCisgICAgICAgIGlmIHRlc3RfbGlzdF9wYXRoIGluIHNlbGYuX2Z1bGxfdGVzdF9s
aXN0OgorICAgICAgICAgICAgcmVzdWx0ID0gW3Rlc3RfbGlzdF9wYXRoLCBdCisgICAgICAgIHJl
dHVybiByZXN1bHQKKworICAgIGRlZiBfYWRkX3Rlc3RzKHNlbGYsIHRlc3RzLCBleHBlY3RhdGlv
bnMsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJz
LCBudW1fbWF0Y2hlcywgb3B0aW9ucywgb3ZlcnJpZGVzX2FsbG93ZWQpOgorICAgICAgICBmb3Ig
dGVzdCBpbiB0ZXN0czoKKyAgICAgICAgICAgIGlmIHNlbGYuX2FscmVhZHlfc2Vlbl9iZXR0ZXJf
bWF0Y2godGVzdCwgdGVzdF9saXN0X3BhdGgsIG51bV9tYXRjaGVzLCBsaW5lbm8sIG92ZXJyaWRl
c19hbGxvd2VkKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBzZWxm
Ll9jbGVhcl9leHBlY3RhdGlvbnNfZm9yX3Rlc3QodGVzdCwgdGVzdF9saXN0X3BhdGgpCisgICAg
ICAgICAgICBzZWxmLl90ZXN0X2xpc3RfcGF0aHNbdGVzdF0gPSAoc2VsZi5fcG9ydC5ub3JtYWxp
emVfdGVzdF9uYW1lKHRlc3RfbGlzdF9wYXRoKSwgbnVtX21hdGNoZXMsIGxpbmVubykKKyAgICAg
ICAgICAgIHNlbGYuX2FkZF90ZXN0KHRlc3QsIG1vZGlmaWVycywgZXhwZWN0YXRpb25zLCBvcHRp
b25zLCBvdmVycmlkZXNfYWxsb3dlZCkKKworICAgIGRlZiBfYWRkX3Rlc3Qoc2VsZiwgdGVzdCwg
bW9kaWZpZXJzLCBleHBlY3RhdGlvbnMsIG9wdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkKToKKyAg
ICAgICAgIiIiU2V0cyB0aGUgZXhwZWN0ZWQgc3RhdGUgZm9yIGEgZ2l2ZW4gdGVzdC4KKworICAg
ICAgICBUaGlzIHJvdXRpbmUgYXNzdW1lcyB0aGUgdGVzdCBoYXMgbm90IGJlZW4gYWRkZWQgYmVm
b3JlLiBJZiBpdCBoYXMsCisgICAgICAgIHVzZSBfY2xlYXJfZXhwZWN0YXRpb25zX2Zvcl90ZXN0
KCkgdG8gcmVzZXQgdGhlIHN0YXRlIHByaW9yIHRvCisgICAgICAgIGNhbGxpbmcgdGhpcy4KKwor
ICAgICAgICBBcmdzOgorICAgICAgICAgIHRlc3Q6IHRlc3QgdG8gYWRkCisgICAgICAgICAgbW9k
aWZpZXJzOiBzZXF1ZW5jZSBvZiBtb2RpZmllciBrZXl3b3JkcyAoJ3dvbnRmaXgnLCAnc2xvdycs
IGV0Yy4pCisgICAgICAgICAgZXhwZWN0YXRpb25zOiBzZXF1ZW5jZSBvZiBleHBlY3RhdGlvbnMg
KFBBU1MsIElNQUdFLCBldGMuKQorICAgICAgICAgIG9wdGlvbnM6IHNlcXVlbmNlIG9mIGtleXdv
cmRzIGFuZCBidWcgaWRlbnRpZmllcnMuCisgICAgICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQ6IHdo
ZXRoZXIgd2UncmUgcGFyc2luZyB0aGUgcmVndWxhciBleHBlY3RhdGlvbnMKKyAgICAgICAgICAg
ICAgb3IgdGhlIG92ZXJyaWRkaW5nIGV4cGVjdGF0aW9ucyIiIgorICAgICAgICBzZWxmLl90ZXN0
X3RvX2V4cGVjdGF0aW9uc1t0ZXN0XSA9IGV4cGVjdGF0aW9ucworICAgICAgICBmb3IgZXhwZWN0
YXRpb24gaW4gZXhwZWN0YXRpb25zOgorICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25fdG9f
dGVzdHNbZXhwZWN0YXRpb25dLmFkZCh0ZXN0KQorCisgICAgICAgIHNlbGYuX3Rlc3RfdG9fb3B0
aW9uc1t0ZXN0XSA9IG9wdGlvbnMKKyAgICAgICAgc2VsZi5fdGVzdF90b19tb2RpZmllcnNbdGVz
dF0gPSBzZXQoKQorICAgICAgICBmb3IgbW9kaWZpZXIgaW4gbW9kaWZpZXJzOgorICAgICAgICAg
ICAgbW9kX3ZhbHVlID0gc2VsZi5NT0RJRklFUlNbbW9kaWZpZXJdCisgICAgICAgICAgICBzZWxm
Ll9tb2RpZmllcl90b190ZXN0c1ttb2RfdmFsdWVdLmFkZCh0ZXN0KQorICAgICAgICAgICAgc2Vs
Zi5fdGVzdF90b19tb2RpZmllcnNbdGVzdF0uYWRkKG1vZF92YWx1ZSkKKworICAgICAgICBpZiAn
d29udGZpeCcgaW4gbW9kaWZpZXJzOgorICAgICAgICAgICAgc2VsZi5fdGltZWxpbmVfdG9fdGVz
dHNbV09OVEZJWF0uYWRkKHRlc3QpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl90
aW1lbGluZV90b190ZXN0c1tOT1ddLmFkZCh0ZXN0KQorCisgICAgICAgIGlmICdza2lwJyBpbiBt
b2RpZmllcnM6CisgICAgICAgICAgICBzZWxmLl9yZXN1bHRfdHlwZV90b190ZXN0c1tTS0lQXS5h
ZGQodGVzdCkKKyAgICAgICAgZWxpZiBleHBlY3RhdGlvbnMgPT0gc2V0KFtQQVNTXSk6CisgICAg
ICAgICAgICBzZWxmLl9yZXN1bHRfdHlwZV90b190ZXN0c1tQQVNTXS5hZGQodGVzdCkKKyAgICAg
ICAgZWxpZiBsZW4oZXhwZWN0YXRpb25zKSA+IDE6CisgICAgICAgICAgICBzZWxmLl9yZXN1bHRf
dHlwZV90b190ZXN0c1tGTEFLWV0uYWRkKHRlc3QpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBzZWxmLl9yZXN1bHRfdHlwZV90b190ZXN0c1tGQUlMXS5hZGQodGVzdCkKKworICAgICAgICBp
ZiBvdmVycmlkZXNfYWxsb3dlZDoKKyAgICAgICAgICAgIHNlbGYuX292ZXJyaWRkaW5nX3Rlc3Rz
LmFkZCh0ZXN0KQorCisgICAgZGVmIF9jbGVhcl9leHBlY3RhdGlvbnNfZm9yX3Rlc3Qoc2VsZiwg
dGVzdCwgdGVzdF9saXN0X3BhdGgpOgorICAgICAgICAiIiJSZW1vdmUgcHJleGlzdGluZyBleHBl
Y3RhdGlvbnMgZm9yIHRoaXMgdGVzdC4KKyAgICAgICAgVGhpcyBoYXBwZW5zIGlmIHdlIGFyZSBz
ZWVpbmcgYSBtb3JlIHByZWNpc2UgcGF0aAorICAgICAgICB0aGFuIGEgcHJldmlvdXMgbGlzdGlu
Zy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHRlc3QgaW4gc2VsZi5fdGVzdF9saXN0X3BhdGhz
OgorICAgICAgICAgICAgc2VsZi5fdGVzdF90b19leHBlY3RhdGlvbnMucG9wKHRlc3QsICcnKQor
ICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2Zyb21fc2V0cyh0ZXN0LCBzZWxmLl9leHBlY3RhdGlv
bl90b190ZXN0cykKKyAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9tX3NldHModGVzdCwgc2Vs
Zi5fbW9kaWZpZXJfdG9fdGVzdHMpCisgICAgICAgICAgICBzZWxmLl9yZW1vdmVfZnJvbV9zZXRz
KHRlc3QsIHNlbGYuX3RpbWVsaW5lX3RvX3Rlc3RzKQorICAgICAgICAgICAgc2VsZi5fcmVtb3Zl
X2Zyb21fc2V0cyh0ZXN0LCBzZWxmLl9yZXN1bHRfdHlwZV90b190ZXN0cykKKworICAgICAgICBz
ZWxmLl90ZXN0X2xpc3RfcGF0aHNbdGVzdF0gPSBzZWxmLl9wb3J0Lm5vcm1hbGl6ZV90ZXN0X25h
bWUodGVzdF9saXN0X3BhdGgpCisKKyAgICBkZWYgX3JlbW92ZV9mcm9tX3NldHMoc2VsZiwgdGVz
dCwgZGljdCk6CisgICAgICAgICIiIlJlbW92ZXMgdGhlIGdpdmVuIHRlc3QgZnJvbSB0aGUgc2V0
cyBpbiB0aGUgZGljdGlvbmFyeS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIHRlc3Q6IHRl
c3QgdG8gbG9vayBmb3IKKyAgICAgICAgICBkaWN0OiBkaWN0IG9mIHNldHMgb2YgZmlsZXMiIiIK
KyAgICAgICAgZm9yIHNldF9vZl90ZXN0cyBpbiBkaWN0Lml0ZXJ2YWx1ZXMoKToKKyAgICAgICAg
ICAgIGlmIHRlc3QgaW4gc2V0X29mX3Rlc3RzOgorICAgICAgICAgICAgICAgIHNldF9vZl90ZXN0
cy5yZW1vdmUodGVzdCkKKworICAgIGRlZiBfYWxyZWFkeV9zZWVuX2JldHRlcl9tYXRjaChzZWxm
LCB0ZXN0LCB0ZXN0X2xpc3RfcGF0aCwgbnVtX21hdGNoZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbmVubywgb3ZlcnJpZGVzX2FsbG93ZWQpOgorICAgICAgICAiIiJS
ZXR1cm5zIHdoZXRoZXIgd2UndmUgc2VlbiBhIGJldHRlciBtYXRjaCBhbHJlYWR5IGluIHRoZSBm
aWxlLgorCisgICAgICAgIFJldHVybnMgVHJ1ZSBpZiB3ZSd2ZSBhbHJlYWR5IHNlZW4gYSB0ZXN0
X2xpc3RfcGF0aCB0aGF0IG1hdGNoZXMgbW9yZSBvZiB0aGUgdGVzdAorICAgICAgICAgICAgdGhh
biB0aGlzIHBhdGggZG9lcworICAgICAgICAiIiIKKyAgICAgICAgIyBGSVhNRTogU2VlIGNvbW1l
bnQgYmVsb3cgYWJvdXQgbWF0Y2hpbmcgdGVzdCBjb25maWdzIGFuZCBudW1fbWF0Y2hlcy4KKyAg
ICAgICAgaWYgbm90IHRlc3QgaW4gc2VsZi5fdGVzdF9saXN0X3BhdGhzOgorICAgICAgICAgICAg
IyBXZSd2ZSBuZXZlciBzZWVuIHRoaXMgdGVzdCBiZWZvcmUuCisgICAgICAgICAgICByZXR1cm4g
RmFsc2UKKworICAgICAgICBwcmV2X2Jhc2VfcGF0aCwgcHJldl9udW1fbWF0Y2hlcywgcHJldl9s
aW5lbm8gPSBzZWxmLl90ZXN0X2xpc3RfcGF0aHNbdGVzdF0KKyAgICAgICAgYmFzZV9wYXRoID0g
c2VsZi5fcG9ydC5ub3JtYWxpemVfdGVzdF9uYW1lKHRlc3RfbGlzdF9wYXRoKQorCisgICAgICAg
IGlmIGxlbihwcmV2X2Jhc2VfcGF0aCkgPiBsZW4oYmFzZV9wYXRoKToKKyAgICAgICAgICAgICMg
VGhlIHByZXZpb3VzIHBhdGggbWF0Y2hlZCBtb3JlIG9mIHRoZSB0ZXN0LgorICAgICAgICAgICAg
cmV0dXJuIFRydWUKKworICAgICAgICBpZiBsZW4ocHJldl9iYXNlX3BhdGgpIDwgbGVuKGJhc2Vf
cGF0aCk6CisgICAgICAgICAgICAjIFRoaXMgcGF0aCBtYXRjaGVzIG1vcmUgb2YgdGhlIHRlc3Qu
CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBpZiBvdmVycmlkZXNfYWxsb3dl
ZCBhbmQgdGVzdCBub3QgaW4gc2VsZi5fb3ZlcnJpZGRpbmdfdGVzdHM6CisgICAgICAgICAgICAj
IFdlIGhhdmUgc2VlbiB0aGlzIHBhdGgsIGJ1dCB0aGF0J3Mgb2theSBiZWNhdXNlIGl0IGlzCisg
ICAgICAgICAgICAjIGluIHRoZSBvdmVycmlkZXMgYW5kIHRoZSBlYXJsaWVyIHBhdGggd2FzIGlu
IHRoZQorICAgICAgICAgICAgIyBleHBlY3RhdGlvbnMgKG5vdCB0aGUgb3ZlcnJpZGVzKS4KKyAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICMgQXQgdGhpcyBwb2ludCB3ZSBrbm93
IHdlIGhhdmUgc2VlbiBhIHByZXZpb3VzIGV4YWN0IG1hdGNoIG9uIHRoaXMKKyAgICAgICAgIyBi
YXNlIHBhdGgsIHNvIHdlIG5lZWQgdG8gY2hlY2sgdGhlIHR3byBzZXRzIG9mIG1vZGlmaWVycy4K
KworICAgICAgICBpZiBvdmVycmlkZXNfYWxsb3dlZDoKKyAgICAgICAgICAgIGV4cGVjdGF0aW9u
X3NvdXJjZSA9ICJvdmVycmlkZSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4cGVjdGF0
aW9uX3NvdXJjZSA9ICJleHBlY3RhdGlvbiIKKworICAgICAgICAjIEZJWE1FOiBUaGlzIGNvZGUg
d2FzIG9yaWdpbmFsbHkgZGVzaWduZWQgdG8gYWxsb3cgbGluZXMgdGhhdCBtYXRjaGVkCisgICAg
ICAgICMgbW9yZSBtb2RpZmllcnMgdG8gb3ZlcnJpZGUgbGluZXMgdGhhdCBtYXRjaGVkIGZld2Vy
IG1vZGlmaWVycy4KKyAgICAgICAgIyBIb3dldmVyLCB3ZSBjdXJyZW50bHkgdmlldyB0aGVzZSBh
cyBlcnJvcnMuIElmIHdlIGRlY2lkZSB0byBtYWtlCisgICAgICAgICMgdGhpcyBwb2xpY3kgcGVy
bWFuZW50LCB3ZSBjYW4gcHJvYmFibHkgc2ltcGxpZnkgdGhpcyBjb2RlCisgICAgICAgICMgYW5k
IHRoZSBNb2RpZmllck1hdGNoZXIgY29kZSBhIGZhaXIgYW1vdW50LgorICAgICAgICAjCisgICAg
ICAgICMgVG8gdXNlIHRoZSAibW9yZSBtb2RpZmllcnMgd2lucyIgcG9saWN5LCBjaGFuZ2UgdGhl
ICJfYWRkX2Vycm9yIiBsaW5lcyBmb3Igb3ZlcnJpZGVzCisgICAgICAgICMgdG8gX2xvZ19ub25f
ZmF0YWxfZXJyb3IoKSBhbmQgY2hhbmdlIHRoZSBjb21tZW50ZWQtb3V0ICJyZXR1cm4gRmFsc2Ui
LgorCisgICAgICAgIGlmIHByZXZfbnVtX21hdGNoZXMgPT0gbnVtX21hdGNoZXM6CisgICAgICAg
ICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLAorICAgICAgICAgICAgICAgICdEdXBsaWNhdGUg
b3IgYW1iaWd1b3VzICVzLicgJSBleHBlY3RhdGlvbl9zb3VyY2UsCisgICAgICAgICAgICAgICAg
dGVzdCkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgaWYgcHJldl9udW1fbWF0
Y2hlcyA8IG51bV9tYXRjaGVzOgorICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywK
KyAgICAgICAgICAgICAgICAnTW9yZSBzcGVjaWZpYyBlbnRyeSBvbiBsaW5lICVkIG92ZXJyaWRl
cyBsaW5lICVkJyAlCisgICAgICAgICAgICAgICAgKGxpbmVubywgcHJldl9saW5lbm8pLCB0ZXN0
X2xpc3RfcGF0aCkKKyAgICAgICAgICAgICMgRklYTUU6IHJldHVybiBGYWxzZSBpZiB3ZSB3YW50
IG1vcmUgc3BlY2lmaWMgdG8gd2luLgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAg
ICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLAorICAgICAgICAgICAgJ01vcmUgc3BlY2lmaWMgZW50
cnkgb24gbGluZSAlZCBvdmVycmlkZXMgbGluZSAlZCcgJQorICAgICAgICAgICAgKHByZXZfbGlu
ZW5vLCBsaW5lbm8pLCB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAg
IGRlZiBfYWRkX2Vycm9yKHNlbGYsIGxpbmVubywgbXNnLCBwYXRoKToKKyAgICAgICAgIiIiUmVw
b3J0cyBhbiBlcnJvciB0aGF0IHdpbGwgcHJldmVudCBydW5uaW5nIHRoZSB0ZXN0cy4gRG9lcyBu
b3QKKyAgICAgICAgaW1tZWRpYXRlbHkgcmFpc2UgYW4gZXhjZXB0aW9uIGJlY2F1c2Ugd2UnZCBs
aWtlIHRvIGFnZ3JlZ2F0ZSBhbGwgdGhlCisgICAgICAgIGVycm9ycyBzbyB0aGV5IGNhbiBhbGwg
YmUgcHJpbnRlZCBvdXQuIiIiCisgICAgICAgIHNlbGYuX2Vycm9ycy5hcHBlbmQoJ0xpbmU6JXMg
JXMgJXMnICUgKGxpbmVubywgbXNnLCBwYXRoKSkKKworICAgIGRlZiBfbG9nX25vbl9mYXRhbF9l
cnJvcihzZWxmLCBsaW5lbm8sIG1zZywgcGF0aCk6CisgICAgICAgICIiIlJlcG9ydHMgYW4gZXJy
b3IgdGhhdCB3aWxsIG5vdCBwcmV2ZW50IHJ1bm5pbmcgdGhlIHRlc3RzLiBUaGVzZSBhcmUKKyAg
ICAgICAgc3RpbGwgZXJyb3JzLCBidXQgbm90IGJhZCBlbm91Z2ggdG8gd2FycmFudCBicmVha2lu
ZyB0ZXN0IHJ1bm5pbmcuIiIiCisgICAgICAgIHNlbGYuX25vbl9mYXRhbF9lcnJvcnMuYXBwZW5k
KCdMaW5lOiVzICVzICVzJyAlIChsaW5lbm8sIG1zZywgcGF0aCkpCisKKworY2xhc3MgTW9kaWZp
ZXJNYXRjaFJlc3VsdChvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToK
KyAgICAgICAgc2VsZi5udW1fbWF0Y2hlcyA9IE1vZGlmaWVyTWF0Y2hlci5OT19NQVRDSAorICAg
ICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYuZXJyb3JzID0gW10KKyAg
ICAgICAgc2VsZi53YXJuaW5ncyA9IFtdCisgICAgICAgIHNlbGYubW9kaWZpZXJzID0gW10KKyAg
ICAgICAgc2VsZi5fbWF0Y2hlZF9yZWdleGVzID0gc2V0KCkKKyAgICAgICAgc2VsZi5fbWF0Y2hl
ZF9tYWNyb3MgPSBzZXQoKQorCisKK2NsYXNzIE1vZGlmaWVyTWF0Y2hlcihvYmplY3QpOgorCisg
ICAgIiIiCisgICAgVGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUg
Im1vZGlmaWVycyIgZm9yIGEgZ2l2ZW4KKyAgICBsaW5lIGluIHRoZSBleHBlY3RhdGlvbnMgZmls
ZS4gTW9kaWZpZXJzIGFyZSB0aGUgdG9rZW5zIHRoYXQgYXBwZWFyIHRvIHRoZQorICAgIGxlZnQg
b2YgdGhlIGNvbG9uIG9uIGEgbGluZS4gRm9yIGV4YW1wbGUsICJCVUcxMjM0IiwgIkRFQlVHIiwg
YW5kICJXSU4iIGFyZQorICAgIGFsbCBtb2RpZmllcnMuIFRoaXMgY2xhc3MgZ2V0cyB3aGF0IHRo
ZSB2YWxpZCBtb2RpZmllcnMgYXJlLCBhbmQgd2hpY2gKKyAgICBtb2RpZmllcnMgYXJlIGFsbG93
ZWQgdG8gZXhpc3QgdG9nZXRoZXIgb24gYSBsaW5lLCBmcm9tIHRoZQorICAgIFRlc3RDb25maWd1
cmF0aW9uIG9iamVjdCB0aGF0IGlzIHBhc3NlZCBpbiB0byB0aGUgY2FsbC4KKworICAgIFRoaXMg
Y2xhc3MgZGV0ZWN0cyAqaW50cmEqLWxpbmUgZXJyb3JzIGxpa2UgdW5rbm93biBtb2RpZmllcnMs
IGJ1dAorICAgIGRvZXMgbm90IGRldGVjdCAqaW50ZXIqLWxpbmUgbW9kaWZpZXJzIGxpa2UgZHVw
bGljYXRlIGV4cGVjdGF0aW9ucy4KKworICAgIE1vcmUgaW1wb3J0YW50bHksIHRoaXMgY2xhc3Mg
aXMgYWxzbyB1c2VkIHRvIGRldGVybWluZSBpZiBhIGdpdmVuIGxpbmUKKyAgICBtYXRjaGVzIHRo
ZSBwb3J0IGluIHF1ZXN0aW9uLiBNYXRjaGVzIGFyZSByYW5rZWQgYWNjb3JkaW5nIHRvIHRoZSBu
dW1iZXIKKyAgICBvZiBtb2RpZmllcnMgdGhhdCBtYXRjaCBvbiBhIGxpbmUuIEEgbGluZSB3aXRo
IG5vIG1vZGlmaWVycyBtYXRjaGVzCisgICAgZXZlcnl0aGluZyBhbmQgaGFzIGEgc2NvcmUgb2Yg
emVyby4gQSBsaW5lIHdpdGggb25lIG1vZGlmaWVyIG1hdGNoZXMgb25seQorICAgIHBvcnRzIHRo
YXQgaGF2ZSB0aGF0IG1vZGlmaWVyIGFuZCBnZXRzIGEgc2NvcmUgb2YgMSwgYW5kIHNvIG9uZS4g
UG9ydHMKKyAgICB0aGF0IGRvbid0IG1hdGNoIGF0IGFsbCBnZXQgYSBzY29yZSBvZiAtMS4KKwor
ICAgIEdpdmVuIHR3byBsaW5lcyBpbiBhIGZpbGUgdGhhdCBhcHBseSB0byB0aGUgc2FtZSB0ZXN0
LCBpZiBib3RoIGV4cGVjdGF0aW9ucworICAgIG1hdGNoIHRoZSBjdXJyZW50IGNvbmZpZywgdGhl
biB0aGUgZXhwZWN0YXRpb24gaXMgY29uc2lkZXJlZCBhbWJpZ3VvdXMsCisgICAgZXZlbiBpZiBv
bmUgZXhwZWN0YXRpb24gbWF0Y2hlcyBtb3JlIG9mIHRoZSBjb25maWcgdGhhbiB0aGUgb3RoZXIu
IEZvcgorICAgIGV4YW1wbGUsIGluOgorCisgICAgQlVHMSBSRUxFQVNFIDogZm9vLmh0bWwgPSBG
QUlMCisgICAgQlVHMSBXSU4gUkVMRUFTRSA6IGZvby5odG1sID0gUEFTUworICAgIEJVRzIgV0lO
IDogYmFyLmh0bWwgPSBGQUlMCisgICAgQlVHMiBERUJVRyA6IGJhci5odG1sID0gUEFTUworCisg
ICAgbGluZXMgMSBhbmQgMiB3b3VsZCBwcm9kdWNlIGFuIGVycm9yIG9uIGEgV2luIFhQIFJlbGVh
c2UgYm90ICh0aGUgc2NvcmVzCisgICAgd291bGQgYmUgMSBhbmQgMiwgcmVzcGVjdGl2ZWx5KSwg
YW5kIGxpbmVzIHRocmVlIGFuZCBmb3VyIHdvdWxkIHByb2R1Y2UKKyAgICBhIGR1cGxpY2F0ZSBl
eHBlY3RhdGlvbiBvbiBhIFdpbiBEZWJ1ZyBib3Qgc2luY2UgYm90aCB0aGUgJ3dpbicgYW5kIHRo
ZQorICAgICdkZWJ1ZycgZXhwZWN0YXRpb25zIHdvdWxkIGFwcGx5IChib3RoIGhhZCBzY29yZXMg
b2YgMSkuCisKKyAgICBJbiBhZGRpdGlvbiB0byB0aGUgZGVmaW5pdGlvbnMgb2YgYWxsIG9mIHRo
ZSBtb2RpZmllcnMsIHRoZSBjbGFzcworICAgIHN1cHBvcnRzICJtYWNyb3MiIHRoYXQgYXJlIGV4
cGFuZGVkIHByaW9yIHRvIGludGVycHJldGF0aW9uLCBhbmQgImlnbm9yZQorICAgIHJlZ2V4ZXMi
IHRoYXQgY2FuIGJlIHVzZWQgdG8gc2tpcCBvdmVyIG1vZGlmaWVycyBsaWtlIHRoZSBCVUcqIG1v
ZGlmaWVycy4KKyAgICAiIiIKKyAgICBNQUNST1MgPSB7CisgICAgICAgICdtYWMnOiBbJ2xlb3Bh
cmQnLCAnc25vd2xlb3BhcmQnXSwKKyAgICAgICAgJ3dpbic6IFsneHAnLCAndmlzdGEnLCAnd2lu
NyddLAorICAgICAgICAnbGludXgnOiBbJ2x1Y2lkJ10sCisgICAgfQorCisgICAgIyBXZSBkb24n
dCBpbmNsdWRlIHRoZSAibm9uZSIgbW9kaWZpZXIgYmVjYXVzZSBpdCBpc24ndCBhY3R1YWxseSBs
ZWdhbC4KKyAgICBSRUdFWEVTX1RPX0lHTk9SRSA9IChbJ2J1Z1x3KyddICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXN0RXhwZWN0YXRpb25zLk1PRElGSUVSUy5rZXlzKClbOi0xXSkKKyAg
ICBEVVBMSUNBVEVfUkVHRVhFU19BTExPV0VEID0gWydidWdcdysnXQorCisgICAgIyBNYWdpYyB2
YWx1ZSByZXR1cm5lZCB3aGVuIHRoZSBvcHRpb25zIGRvbid0IG1hdGNoLgorICAgIE5PX01BVENI
ID0gLTEKKworICAgICMgRklYTUU6IFRoZSBjb2RlIGN1cnJlbnRseSBkb2Vzbid0IGRldGVjdCBj
b21iaW5hdGlvbnMgb2YgbW9kaWZpZXJzCisgICAgIyB0aGF0IGFyZSBzeW50YWN0aWNhbGx5IHZh
bGlkIGJ1dCBzZW1hbnRpY2FsbHkgaW52YWxpZCwgbGlrZQorICAgICMgJ01BQyBYUCcuIFNlZSBN
b2RpZmllck1hdGNoVGVzdC50ZXN0X2ludmFsaWRfY29tYmluYXRpb25zKCkgaW4gdGhlCisgICAg
IyBfdW5pdHRlc3QucHkgZmlsZS4KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X2NvbmZp
Zyk6CisgICAgICAgICIiIkluaXRpYWxpemUgYSBNb2RpZmllck1hdGNoZXIgYXJndW1lbnQgd2l0
aCB0aGUgVGVzdENvbmZpZ3VyYXRpb24gaXQKKyAgICAgICAgc2hvdWxkIGJlIG1hdGNoZWQgYWdh
aW5zdC4iIiIKKyAgICAgICAgc2VsZi50ZXN0X2NvbmZpZyA9IHRlc3RfY29uZmlnCisgICAgICAg
IHNlbGYuYWxsb3dlZF9jb25maWd1cmF0aW9ucyA9IHRlc3RfY29uZmlnLmFsbF90ZXN0X2NvbmZp
Z3VyYXRpb25zKCkKKyAgICAgICAgc2VsZi5tYWNyb3MgPSBzZWxmLk1BQ1JPUworCisgICAgICAg
IHNlbGYucmVnZXhlc190b19pZ25vcmUgPSB7fQorICAgICAgICBmb3IgcmVnZXhfc3RyIGluIHNl
bGYuUkVHRVhFU19UT19JR05PUkU6CisgICAgICAgICAgICBzZWxmLnJlZ2V4ZXNfdG9faWdub3Jl
W3JlZ2V4X3N0cl0gPSByZS5jb21waWxlKHJlZ2V4X3N0cikKKworICAgICAgICAjIEtlZXAgYSBz
ZXQgb2YgYWxsIG9mIHRoZSBsZWdhbCBtb2RpZmllcnMgZm9yIHF1aWNrIGNoZWNraW5nLgorICAg
ICAgICBzZWxmLl9hbGxfbW9kaWZpZXJzID0gc2V0KCkKKworICAgICAgICAjIEtlZXAgYSBkaWN0
IG1hcHBpbmcgdmFsdWVzIGJhY2sgdG8gdGhlaXIgY2F0ZWdvcmllcy4KKyAgICAgICAgc2VsZi5f
Y2F0ZWdvcmllc19mb3JfbW9kaWZpZXJzID0ge30KKyAgICAgICAgZm9yIGNvbmZpZyBpbiBzZWxm
LmFsbG93ZWRfY29uZmlndXJhdGlvbnM6CisgICAgICAgICAgICBmb3IgY2F0ZWdvcnksIG1vZGlm
aWVyIGluIGNvbmZpZy5pdGVtcygpOgorICAgICAgICAgICAgICAgIHNlbGYuX2NhdGVnb3JpZXNf
Zm9yX21vZGlmaWVyc1ttb2RpZmllcl0gPSBjYXRlZ29yeQorICAgICAgICAgICAgICAgIHNlbGYu
X2FsbF9tb2RpZmllcnMuYWRkKG1vZGlmaWVyKQorCisgICAgZGVmIG1hdGNoKHNlbGYsIG9wdGlv
bnMpOgorICAgICAgICAiIiJDaGVja3MgYSBsaXN0IG9mIG9wdGlvbnMgYWdhaW5zdCB0aGUgY29u
ZmlnIHNldCBpbiB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIE9wdGlvbnMgbWF5IGJlIGVpdGhl
ciBhY3R1YWwgbW9kaWZpZXIgc3RyaW5ncywgIm1hY3JvIiBzdHJpbmdzCisgICAgICAgIHRoYXQg
Z2V0IGV4cGFuZGVkIHRvIGEgbGlzdCBvZiBtb2RpZmllcnMsIG9yIHN0cmluZ3MgdGhhdCBhcmUg
YWxsb3dlZAorICAgICAgICB0byBiZSBpZ25vcmVkLiBBbGwgb2YgdGhlIG9wdGlvbnMgbXVzdCBi
ZSBwYXNzZWQgaW4gaW4gbG93ZXIgY2FzZS4KKworICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIg
b2YgbWF0Y2hpbmcgY2F0ZWdvcmllcywgb3IgTk9fTUFUQ0ggKC0xKSBpZiBpdAorICAgICAgICBk
b2Vzbid0IG1hdGNoIG9yIHRoZXJlIHdlcmUgZXJyb3JzIGZvdW5kLiBNYXRjaGVzIGFyZSBwcmlv
cml0aXplZAorICAgICAgICBieSB0aGUgbnVtYmVyIG9mIG1hdGNoaW5nIGNhdGVnb3JpZXMsIGJl
Y2F1c2UgdGhlIG1vcmUgc3BlY2lmaWMKKyAgICAgICAgdGhlIG9wdGlvbnMgbGlzdCwgdGhlIG1v
cmUgY2F0ZWdvcmllcyB3aWxsIG1hdGNoLgorCisgICAgICAgIFRoZSByZXN1bHRzIG9mIHRoZSBt
b3N0IHJlY2VudCBtYXRjaCBhcmUgYXZhaWxhYmxlIGluIHRoZSAnb3B0aW9ucycsCisgICAgICAg
ICdtb2RpZmllcnMnLCAnbnVtX21hdGNoZXMnLCAnZXJyb3JzJywgYW5kICd3YXJuaW5ncycgcHJv
cGVydGllcy4KKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdCA9IE1vZGlmaWVyTWF0Y2hSZXN1
bHQob3B0aW9ucykKKyAgICAgICAgc2VsZi5fcGFyc2UocmVzdWx0KQorICAgICAgICBpZiByZXN1
bHQuZXJyb3JzOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICBzZWxmLl9jb3Vu
dF9tYXRjaGVzKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIF9wYXJz
ZShzZWxmLCByZXN1bHQpOgorICAgICAgICAjIEZJWE1FOiBTaG91bGQgd2Ugd2FybiBhYm91dCBs
aW5lcyBoYXZpbmcgZXZlcnkgdmFsdWUgaW4gYSBjYXRlZ29yeT8KKyAgICAgICAgZm9yIG9wdGlv
biBpbiByZXN1bHQub3B0aW9uczoKKyAgICAgICAgICAgIHNlbGYuX3BhcnNlX29uZShvcHRpb24s
IHJlc3VsdCkKKworICAgIGRlZiBfcGFyc2Vfb25lKHNlbGYsIG9wdGlvbiwgcmVzdWx0KToKKyAg
ICAgICAgaWYgb3B0aW9uIGluIHNlbGYuX2FsbF9tb2RpZmllcnM6CisgICAgICAgICAgICBzZWxm
Ll9hZGRfbW9kaWZpZXIob3B0aW9uLCByZXN1bHQpCisgICAgICAgIGVsaWYgb3B0aW9uIGluIHNl
bGYubWFjcm9zOgorICAgICAgICAgICAgc2VsZi5fZXhwYW5kX21hY3JvKG9wdGlvbiwgcmVzdWx0
KQorICAgICAgICBlbGlmIG5vdCBzZWxmLl9tYXRjaGVzX2FueV9yZWdleChvcHRpb24sIHJlc3Vs
dCk6CisgICAgICAgICAgICByZXN1bHQuZXJyb3JzLmFwcGVuZCgiVW5yZWNvZ25pemVkIG9wdGlv
biAnJXMnIiAlIG9wdGlvbikKKworICAgIGRlZiBfYWRkX21vZGlmaWVyKHNlbGYsIG9wdGlvbiwg
cmVzdWx0KToKKyAgICAgICAgaWYgb3B0aW9uIGluIHJlc3VsdC5tb2RpZmllcnM6CisgICAgICAg
ICAgICByZXN1bHQuZXJyb3JzLmFwcGVuZCgiTW9yZSB0aGFuIG9uZSAnJXMnIiAlIG9wdGlvbikK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllcnMuYXBwZW5kKG9wdGlv
bikKKworICAgIGRlZiBfZXhwYW5kX21hY3JvKHNlbGYsIG1hY3JvLCByZXN1bHQpOgorICAgICAg
ICBpZiBtYWNybyBpbiByZXN1bHQuX21hdGNoZWRfbWFjcm9zOgorICAgICAgICAgICAgcmVzdWx0
LmVycm9ycy5hcHBlbmQoIk1vcmUgdGhhbiBvbmUgJyVzJyIgJSBtYWNybykKKyAgICAgICAgICAg
IHJldHVybgorCisgICAgICAgIG1vZHMgPSBbXQorICAgICAgICBmb3IgbW9kaWZpZXIgaW4gc2Vs
Zi5tYWNyb3NbbWFjcm9dOgorICAgICAgICAgICAgaWYgbW9kaWZpZXIgaW4gcmVzdWx0Lm9wdGlv
bnM6CisgICAgICAgICAgICAgICAgcmVzdWx0LmVycm9ycy5hcHBlbmQoIkNhbid0IHNwZWNpZnkg
Ym90aCBtb2RpZmllciAnJXMnIGFuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIm1hY3JvICclcyciICUgKG1vZGlmaWVyLCBtYWNybykpCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIG1vZHMuYXBwZW5kKG1vZGlmaWVyKQorICAgICAgICByZXN1bHQu
X21hdGNoZWRfbWFjcm9zLmFkZChtYWNybykKKyAgICAgICAgcmVzdWx0Lm1vZGlmaWVycy5leHRl
bmQobW9kcykKKworICAgIGRlZiBfbWF0Y2hlc19hbnlfcmVnZXgoc2VsZiwgb3B0aW9uLCByZXN1
bHQpOgorICAgICAgICBmb3IgcmVnZXhfc3RyLCBwYXR0ZXJuIGluIHNlbGYucmVnZXhlc190b19p
Z25vcmUuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBpZiBwYXR0ZXJuLm1hdGNoKG9wdGlvbik6
CisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3JlZ2V4X21hdGNoKHJlZ2V4X3N0ciwgcmVz
dWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQor
CisgICAgZGVmIF9oYW5kbGVfcmVnZXhfbWF0Y2goc2VsZiwgcmVnZXhfc3RyLCByZXN1bHQpOgor
ICAgICAgICBpZiAocmVnZXhfc3RyIGluIHJlc3VsdC5fbWF0Y2hlZF9yZWdleGVzIGFuZAorICAg
ICAgICAgICAgcmVnZXhfc3RyIG5vdCBpbiBzZWxmLkRVUExJQ0FURV9SRUdFWEVTX0FMTE9XRUQp
OgorICAgICAgICAgICAgcmVzdWx0LmVycm9ycy5hcHBlbmQoIk1vcmUgdGhhbiBvbmUgb3B0aW9u
IG1hdGNoaW5nICclcyciICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4
X3N0cikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5fbWF0Y2hlZF9yZWdleGVz
LmFkZChyZWdleF9zdHIpCisKKyAgICBkZWYgX2NvdW50X21hdGNoZXMoc2VsZiwgcmVzdWx0KToK
KyAgICAgICAgIiIiUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1vZGlmaWVycyB0aGF0IG1hdGNoIHRo
ZSB0ZXN0IGNvbmZpZy4iIiIKKyAgICAgICAgY2F0ZWdvcml6ZWRfbW9kaWZpZXJzID0gc2VsZi5f
Z3JvdXBfYnlfY2F0ZWdvcnkocmVzdWx0Lm1vZGlmaWVycykKKyAgICAgICAgcmVzdWx0Lm51bV9t
YXRjaGVzID0gMAorICAgICAgICBmb3IgY2F0ZWdvcnksIG1vZGlmaWVyIGluIHNlbGYudGVzdF9j
b25maWcuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIGNhdGVnb3J5IGluIGNhdGVnb3JpemVkX21v
ZGlmaWVyczoKKyAgICAgICAgICAgICAgICBpZiBtb2RpZmllciBpbiBjYXRlZ29yaXplZF9tb2Rp
ZmllcnNbY2F0ZWdvcnldOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQubnVtX21hdGNoZXMg
Kz0gMQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5u
dW1fbWF0Y2hlcyA9IHNlbGYuTk9fTUFUQ0gKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisK
KyAgICBkZWYgX2dyb3VwX2J5X2NhdGVnb3J5KHNlbGYsIG1vZGlmaWVycyk6CisgICAgICAgICMg
UmV0dXJucyBhIGRpY3Qgb2YgY2F0ZWdvcnkgbmFtZSAtPiBsaXN0IG9mIG1vZGlmaWVycy4KKyAg
ICAgICAgbW9kaWZpZXJzX2J5X2NhdGVnb3J5ID0ge30KKyAgICAgICAgZm9yIG0gaW4gbW9kaWZp
ZXJzOgorICAgICAgICAgICAgbW9kaWZpZXJzX2J5X2NhdGVnb3J5LnNldGRlZmF1bHQoc2VsZi5f
Y2F0ZWdvcnkobSksIFtdKS5hcHBlbmQobSkKKyAgICAgICAgcmV0dXJuIG1vZGlmaWVyc19ieV9j
YXRlZ29yeQorCisgICAgZGVmIF9jYXRlZ29yeShzZWxmLCBtb2RpZmllcik6CisgICAgICAgIHJl
dHVybiBzZWxmLl9jYXRlZ29yaWVzX2Zvcl9tb2RpZmllcnNbbW9kaWZpZXJdCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNf
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA5MDUy
MCkJKGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6OTA1MjApCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3Qu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NjcgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisj
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0ZXN0cyBmb3IgdGVzdF9leHBlY3RhdGlvbnMucHku
IiIiCisKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBv
cnQgcG9ydAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgYmFzZQorZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UudGVzdF9leHBlY3RhdGlvbnMg
aW1wb3J0ICoKKworY2xhc3MgRnVuY3Rpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg
ZGVmIHRlc3RfcmVzdWx0X3dhc19leHBlY3RlZChzZWxmKToKKyAgICAgICAgIyB0ZXN0IGJhc2lj
cworICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHRfd2FzX2V4cGVjdGVkKFBBU1MsIHNl
dChbUEFTU10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZhbHNlLCBGYWxzZSksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3VsdF93
YXNfZXhwZWN0ZWQoVEVYVCwgc2V0KFtQQVNTXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRmFsc2UsIEZhbHNlKSwgRmFsc2UpCisKKyAgICAgICAgIyB0
ZXN0IGhhbmRsaW5nIG9mIEZBSUwgZXhwZWN0YXRpb25zCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHJlc3VsdF93YXNfZXhwZWN0ZWQoSU1BR0VfUExVU19URVhULCBzZXQoW0ZBSUxdKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgRmFsc2Up
LCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHRfd2FzX2V4cGVjdGVkKElN
QUdFLCBzZXQoW0ZBSUxdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGYWxzZSwgRmFsc2UpLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhy
ZXN1bHRfd2FzX2V4cGVjdGVkKFRFWFQsIHNldChbRkFJTF0pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlLCBGYWxzZSksIFRydWUpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3VsdF93YXNfZXhwZWN0ZWQoQ1JBU0gsIHNldChbRkFJTF0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlLCBG
YWxzZSksIEZhbHNlKQorCisgICAgICAgICMgdGVzdCBoYW5kbGluZyBvZiBTS0lQcGVkIHRlc3Rz
IGFuZCByZXN1bHRzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3VsdF93YXNfZXhwZWN0
ZWQoU0tJUCwgc2V0KFtDUkFTSF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZhbHNlLCBUcnVlKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMocmVzdWx0X3dhc19leHBlY3RlZChTS0lQLCBzZXQoW0NSQVNIXSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UsIEZhbHNlKSwgRmFsc2UpCisK
KyAgICAgICAgIyB0ZXN0IGhhbmRsaW5nIG9mIE1JU1NJTkcgcmVzdWx0cyBhbmQgdGhlIFJFQkFT
RUxJTkUgbW9kaWZpZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzdWx0X3dhc19leHBl
Y3RlZChNSVNTSU5HLCBzZXQoW1BBU1NdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUcnVlLCBGYWxzZSksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHJlc3VsdF93YXNfZXhwZWN0ZWQoTUlTU0lORywgc2V0KFtQQVNTXSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UsIEZhbHNlKSwgRmFs
c2UpCisKKyAgICBkZWYgdGVzdF9yZW1vdmVfcGl4ZWxfZmFpbHVyZXMoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHJlbW92ZV9waXhlbF9mYWlsdXJlcyhzZXQoW1RFWFRdKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldChbVEVYVF0pKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhyZW1vdmVfcGl4ZWxfZmFpbHVyZXMoc2V0KFtQQVNTXSkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXQoW1BBU1NdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVt
b3ZlX3BpeGVsX2ZhaWx1cmVzKHNldChbSU1BR0VdKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldChbUEFTU10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZW1vdmVfcGl4ZWxf
ZmFpbHVyZXMoc2V0KFtJTUFHRV9QTFVTX1RFWFRdKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldChbVEVYVF0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZW1vdmVfcGl4ZWxf
ZmFpbHVyZXMoc2V0KFtQQVNTLCBJTUFHRSwgQ1JBU0hdKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldChbUEFTUywgQ1JBU0hdKSkKKworCitjbGFzcyBCYXNlKHVuaXR0ZXN0LlRlc3RD
YXNlKToKKyAgICAjIE5vdGUgdGhhdCBhbGwgb2YgdGhlc2UgdGVzdHMgYXJlIHdyaXR0ZW4gYXNz
dW1pbmcgdGhlIGNvbmZpZ3VyYXRpb24KKyAgICAjIGJlaW5nIHRlc3RlZCBpcyBXaW5kb3dzIFhQ
LCBSZWxlYXNlIGJ1aWxkLgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RGdW5jLCBzZXRV
cD1Ob25lLCB0ZWFyRG93bj1Ob25lLCBkZXNjcmlwdGlvbj1Ob25lKToKKyAgICAgICAgc2VsZi5f
cG9ydCA9IHBvcnQuZ2V0KCd0ZXN0LXdpbi14cCcsIE5vbmUpCisgICAgICAgIHNlbGYuX2ZzID0g
c2VsZi5fcG9ydC5fZmlsZXN5c3RlbQorICAgICAgICBzZWxmLl9leHAgPSBOb25lCisgICAgICAg
IHVuaXR0ZXN0LlRlc3RDYXNlLl9faW5pdF9fKHNlbGYsIHRlc3RGdW5jKQorCisgICAgZGVmIGdl
dF90ZXN0KHNlbGYsIHRlc3RfbmFtZSk6CisgICAgICAgICMgRklYTUU6IFJlbW92ZSB0aGlzIHJv
dXRpbmUgYW5kIGp1c3QgcmVmZXJlbmNlIHRlc3QgbmFtZXMgZGlyZWN0bHkuCisgICAgICAgIHJl
dHVybiB0ZXN0X25hbWUKKworICAgIGRlZiBnZXRfYmFzaWNfdGVzdHMoc2VsZik6CisgICAgICAg
IHJldHVybiBbc2VsZi5nZXRfdGVzdCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJyksCisg
ICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVzdCgnZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hl
Y2tzdW0uaHRtbCcpLAorICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QoJ2ZhaWx1cmVzL2V4
cGVjdGVkL2NyYXNoLmh0bWwnKSwKKyAgICAgICAgICAgICAgICBzZWxmLmdldF90ZXN0KCdmYWls
dXJlcy9leHBlY3RlZC9taXNzaW5nX3RleHQuaHRtbCcpLAorICAgICAgICAgICAgICAgIHNlbGYu
Z2V0X3Rlc3QoJ2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwnKSwKKyAgICAgICAgICAgICAg
ICBzZWxmLmdldF90ZXN0KCdwYXNzZXMvdGV4dC5odG1sJyldCisKKyAgICBkZWYgZ2V0X2Jhc2lj
X2V4cGVjdGF0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIiIgorQlVHX1RFU1QgOiBmYWls
dXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCitCVUdfVEVTVCBXT05URklYIFNLSVAgOiBm
YWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sID0gQ1JBU0gKK0JVR19URVNUIFJFQkFTRUxJTkUg
OiBmYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2ltYWdlLmh0bWwgPSBNSVNTSU5HCitCVUdfVEVT
VCBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCA9IElNQUdF
CitCVUdfVEVTVCBXT05URklYIE1BQyA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwgPSBJ
TUFHRQorIiIiCisKKyAgICBkZWYgcGFyc2VfZXhwKHNlbGYsIGV4cGVjdGF0aW9ucywgb3ZlcnJp
ZGVzPU5vbmUsIGlzX2xpbnRfbW9kZT1GYWxzZSk6CisgICAgICAgIHRlc3RfY29uZmlnID0gc2Vs
Zi5fcG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24oKQorICAgICAgICBzZWxmLl9leHAgPSBUZXN0RXhw
ZWN0YXRpb25zKHNlbGYuX3BvcnQsCisgICAgICAgICAgICAgdGVzdHM9c2VsZi5nZXRfYmFzaWNf
dGVzdHMoKSwKKyAgICAgICAgICAgICBleHBlY3RhdGlvbnM9ZXhwZWN0YXRpb25zLAorICAgICAg
ICAgICAgIHRlc3RfY29uZmlnPXRlc3RfY29uZmlnLAorICAgICAgICAgICAgIGlzX2xpbnRfbW9k
ZT1pc19saW50X21vZGUsCisgICAgICAgICAgICAgb3ZlcnJpZGVzPW92ZXJyaWRlcykKKworICAg
IGRlZiBhc3NlcnRfZXhwKHNlbGYsIHRlc3QsIHJlc3VsdCk6CisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHNlbGYuX2V4cC5nZXRfZXhwZWN0YXRpb25zKHNlbGYuZ2V0X3Rlc3QodGVzdCkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoW3Jlc3VsdF0pKQorCisKK2NsYXNzIEJhc2lj
VGVzdHMoQmFzZSk6CisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgIHNlbGYucGFy
c2VfZXhwKHNlbGYuZ2V0X2Jhc2ljX2V4cGVjdGF0aW9ucygpKQorICAgICAgICBzZWxmLmFzc2Vy
dF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIFRFWFQpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCcsIElNQUdF
KQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ3Bhc3Nlcy90ZXh0Lmh0bWwnLCBQQVNTKQorICAg
ICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwnLCBQQVNT
KQorCisKK2NsYXNzIE1pc2NUZXN0cyhCYXNlKToKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9yZXN1
bHRzKHNlbGYpOgorICAgICAgICBzZWxmLnBhcnNlX2V4cCgnQlVHWCA6IGZhaWx1cmVzL2V4cGVj
dGVkL3RleHQuaHRtbCA9IFRFWFQgQ1JBU0gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
bGYuX2V4cC5nZXRfZXhwZWN0YXRpb25zKAorICAgICAgICAgICAgc2VsZi5nZXRfdGVzdCgnZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJykpLAorICAgICAgICAgICAgc2V0KFtURVhULCBDUkFT
SF0pKQorCisgICAgZGVmIHRlc3RfY2F0ZWdvcnlfZXhwZWN0YXRpb25zKHNlbGYpOgorICAgICAg
ICAjIFRoaXMgdGVzdCBjaGVja3MgdW5rbm93biB0ZXN0cyBhcmUgbm90IHByZXNlbnQgaW4gdGhl
CisgICAgICAgICMgZXhwZWN0YXRpb25zIGFuZCB0aGF0IGtub3duIHRlc3QgcGFydCBvZiBhIHRl
c3QgY2F0ZWdvcnkgaXMKKyAgICAgICAgIyBwcmVzZW50IGluIHRoZSBleHBlY3RhdGlvbnMuCisg
ICAgICAgIGV4cF9zdHIgPSAiIiIKK0JVR1ggV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkID0g
SU1BR0UKKyIiIgorICAgICAgICBzZWxmLnBhcnNlX2V4cChleHBfc3RyKQorICAgICAgICB0ZXN0
X25hbWUgPSAnZmFpbHVyZXMvZXhwZWN0ZWQvdW5rbm93bi10ZXN0Lmh0bWwnCisgICAgICAgIHVu
a25vd25fdGVzdCA9IHNlbGYuZ2V0X3Rlc3QodGVzdF9uYW1lKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhLZXlFcnJvciwgc2VsZi5fZXhwLmdldF9leHBlY3RhdGlvbnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVua25vd25fdGVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdm
YWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgSU1BR0UpCisKKyAgICBkZWYgdGVzdF9nZXRf
b3B0aW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5wYXJzZV9leHAoc2VsZi5nZXRfYmFzaWNfZXhw
ZWN0YXRpb25zKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZXhwLmdldF9vcHRp
b25zKAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QoJ3Bhc3Nlcy90ZXh0
Lmh0bWwnKSksIFtdKQorCisgICAgZGVmIHRlc3RfZXhwZWN0YXRpb25zX2pzb25fZm9yX2FsbF9w
bGF0Zm9ybXMoc2VsZik6CisgICAgICAgIHNlbGYucGFyc2VfZXhwKHNlbGYuZ2V0X2Jhc2ljX2V4
cGVjdGF0aW9ucygpKQorICAgICAgICBqc29uX3N0ciA9IHNlbGYuX2V4cC5nZXRfZXhwZWN0YXRp
b25zX2pzb25fZm9yX2FsbF9wbGF0Zm9ybXMoKQorICAgICAgICAjIEZJWE1FOiB0ZXN0IGFjdHVh
bCBjb250ZW50PworICAgICAgICBzZWxmLmFzc2VydFRydWUoanNvbl9zdHIpCisKKyAgICBkZWYg
dGVzdF9nZXRfZXhwZWN0YXRpb25zX3N0cmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5wYXJzZV9l
eHAoc2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHNlbGYuX2V4cC5nZXRfZXhwZWN0YXRpb25zX3N0cmluZygKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5nZXRfdGVzdCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJykpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAnVEVYVCcpCisKKyAgICBkZWYgdGVzdF9leHBlY3Rh
dGlvbl90b19zdHJpbmcoc2VsZik6CisgICAgICAgICMgTm9ybWFsIGNhc2VzIGFyZSBoYW5kbGVk
IGJ5IG90aGVyIHRlc3RzLgorICAgICAgICBzZWxmLnBhcnNlX2V4cChzZWxmLmdldF9iYXNpY19l
eHBlY3RhdGlvbnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2Vs
Zi5fZXhwLmV4cGVjdGF0aW9uX3RvX3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
LTEpCisKKyAgICBkZWYgdGVzdF9nZXRfdGVzdF9zZXQoc2VsZik6CisgICAgICAgICMgSGFuZGxl
IHNvbWUgY29ybmVyIGNhc2VzIGZvciB0aGlzIHJvdXRpbmUgbm90IGNvdmVyZWQgYnkgb3RoZXIg
dGVzdHMuCisgICAgICAgIHNlbGYucGFyc2VfZXhwKHNlbGYuZ2V0X2Jhc2ljX2V4cGVjdGF0aW9u
cygpKQorICAgICAgICBzID0gc2VsZi5fZXhwLmdldF90ZXN0X3NldChXT05URklYKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHMsCisgICAgICAgICAgICBzZXQoW3NlbGYuZ2V0X3Rlc3QoJ2Zh
aWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwnKSwKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRf
dGVzdCgnZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCcpXSkpCisgICAgICAg
IHMgPSBzZWxmLl9leHAuZ2V0X3Rlc3Rfc2V0KFdPTlRGSVgsIENSQVNIKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHMsCisgICAgICAgICAgICBzZXQoW3NlbGYuZ2V0X3Rlc3QoJ2ZhaWx1cmVz
L2V4cGVjdGVkL2NyYXNoLmh0bWwnKV0pKQorICAgICAgICBzID0gc2VsZi5fZXhwLmdldF90ZXN0
X3NldChXT05URklYLCBDUkFTSCwgaW5jbHVkZV9za2lwcz1GYWxzZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzLCBzZXQoW10pKQorCisgICAgZGVmIHRlc3RfcGFyc2VfZXJyb3JfZmF0YWwo
c2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYucGFyc2VfZXhwKCIiIkZPTyA6
IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKK1NLSVAgOiBmYWlsdXJlcy9leHBl
Y3RlZC9pbWFnZS5odG1sIiIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShUcnVlLCAi
UGFyc2VFcnJvciB3YXNuJ3QgcmFpc2VkIikKKyAgICAgICAgZXhjZXB0IFBhcnNlRXJyb3IsIGU6
CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZS5mYXRhbCkKKyAgICAgICAgICAgIGV4cF9l
cnJvcnMgPSBbdSJMaW5lOjEgVW5yZWNvZ25pemVkIG9wdGlvbiAnZm9vJyBmYWlsdXJlcy9leHBl
Y3RlZC90ZXh0Lmh0bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1IkxpbmU6MiBNaXNz
aW5nIGV4cGVjdGF0aW9ucy4gWycgZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCddIl0KKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnXG4nLmpvaW4obWFwKHN0ciwgZXhw
X2Vycm9ycykpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm9ycywgZXhwX2Vy
cm9ycykKKworICAgIGRlZiB0ZXN0X3BhcnNlX2Vycm9yX25vbmZhdGFsKHNlbGYpOgorICAgICAg
ICB0cnk6CisgICAgICAgICAgICBzZWxmLnBhcnNlX2V4cCgnU0tJUCA6IGZhaWx1cmVzL2V4cGVj
dGVkL3RleHQuaHRtbCA9IFRFWFQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfbGlu
dF9tb2RlPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFRydWUsICJQYXJzZUVy
cm9yIHdhc24ndCByYWlzZWQiKQorICAgICAgICBleGNlcHQgUGFyc2VFcnJvciwgZToKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZS5mYXRhbCkKKyAgICAgICAgICAgIGV4cF9lcnJvcnMg
PSBbdSdMaW5lOjEgVGVzdCBsYWNrcyBCVUcgbW9kaWZpZXIuIGZhaWx1cmVzL2V4cGVjdGVkL3Rl
eHQuaHRtbCddCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgJ1xuJy5qb2lu
KG1hcChzdHIsIGV4cF9lcnJvcnMpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5l
cnJvcnMsIGV4cF9lcnJvcnMpCisKKyAgICBkZWYgdGVzdF9vdmVycmlkZXMoc2VsZik6CisgICAg
ICAgIHNlbGYucGFyc2VfZXhwKCJCVUdfRVhQOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwg
PSBURVhUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIkJVR19PVkVSUklERSA6IGZhaWx1cmVz
L2V4cGVjdGVkL3RleHQuaHRtbCA9IElNQUdFIikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBJTUFHRSkKKworICAgIGRlZiB0ZXN0X292ZXJy
aWRlc19fZHVwbGljYXRlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVy
cm9yLCBzZWxmLnBhcnNlX2V4cCwKKyAgICAgICAgICAgICAiQlVHX0VYUDogZmFpbHVyZXMvZXhw
ZWN0ZWQvdGV4dC5odG1sID0gVEVYVCIsCisgICAgICAgICAgICAgIiIiCitCVUdfT1ZFUlJJREUg
OiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFHRQorQlVHX09WRVJSSURFIDogZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gQ1JBU0gKKyIiIikKKworICAgIGRlZiB0ZXN0X3Bp
eGVsX3Rlc3RzX2ZsYWcoc2VsZik6CisgICAgICAgIGRlZiBtYXRjaCh0ZXN0LCByZXN1bHQsIHBp
eGVsX3Rlc3RzX2VuYWJsZWQpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4cC5tYXRjaGVz
X2FuX2V4cGVjdGVkX3Jlc3VsdCgKKyAgICAgICAgICAgICAgICBzZWxmLmdldF90ZXN0KHRlc3Qp
LCByZXN1bHQsIHBpeGVsX3Rlc3RzX2VuYWJsZWQpCisKKyAgICAgICAgc2VsZi5wYXJzZV9leHAo
c2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSht
YXRjaCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCwgVHJ1ZSkpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVY
VCwgRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGNoKCdmYWlsdXJlcy9leHBl
Y3RlZC90ZXh0Lmh0bWwnLCBDUkFTSCwgVHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
bWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIENSQVNILCBGYWxzZSkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tz
dW0uaHRtbCcsIElNQUdFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hl
Y2tzdW0uaHRtbCcsIFBBU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSkp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2gu
aHRtbCcsIFNLSVAsIEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdwYXNz
ZXMvdGV4dC5odG1sJywgUEFTUywgRmFsc2UpKQorCisgICAgZGVmIHRlc3RfbW9yZV9zcGVjaWZp
Y19vdmVycmlkZV9yZXNldHNfc2tpcChzZWxmKToKKyAgICAgICAgc2VsZi5wYXJzZV9leHAoIkJV
R1ggU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkID0gVEVYVFxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAiQlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IElNQUdFXG4iKQorICAg
ICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIElNQUdF
KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0uam9pbihz
ZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcp
IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwLmdldF90ZXN0c193aXRoX3Jl
c3VsdF90eXBlKFNLSVApKQorCitjbGFzcyBFeHBlY3RhdGlvblN5bnRheFRlc3RzKEJhc2UpOgor
ICAgIGRlZiB0ZXN0X21pc3NpbmdfZXhwZWN0YXRpb24oc2VsZik6CisgICAgICAgICMgVGhpcyBp
cyBtaXNzaW5nIHRoZSBleHBlY3RhdGlvbi4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFy
c2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdCVUdf
VEVTVDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJykKKworICAgIGRlZiB0ZXN0X21pc3Np
bmdfY29sb24oc2VsZik6CisgICAgICAgICMgVGhpcyBpcyBtaXNzaW5nIHRoZSBtb2RpZmllcnMg
YW5kIHRoZSAnOicKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5w
YXJzZV9leHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsdXJlcy9leHBlY3RlZC90
ZXh0Lmh0bWwgPSBURVhUJykKKworICAgIGRlZiBkaXNhYmxlZF90ZXN0X3Rvb19tYW55X2NvbG9u
cyhzZWxmKToKKyAgICAgICAgIyBGSVhNRTogRW5hYmxlIHRoaXMgdGVzdCBhbmQgZml4IHRoZSB1
bmRlcmx5aW5nIGJ1Zy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2Vs
Zi5wYXJzZV9leHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdCVUdfVEVTVDogZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gUEFTUyA6JykKKworICAgIGRlZiB0ZXN0X3Rvb19tYW55
X2VxdWFsc19zaWducyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJv
ciwgc2VsZi5wYXJzZV9leHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdCVUdfVEVTVDog
ZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCA9IElNQUdFJykKKworICAgIGRlZiB0
ZXN0X3VucmVjb2duaXplZF9leHBlY3RhdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICdCVUdfVEVTVDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVU5LTk9XTicpCisK
KyAgICBkZWYgdGVzdF9tYWNybyhzZWxmKToKKyAgICAgICAgZXhwX3N0ciA9ICIiIgorQlVHX1RF
U1QgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAorIiIiCisgICAgICAg
IHNlbGYucGFyc2VfZXhwKGV4cF9zdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCkKKworCitjbGFzcyBTZW1hbnRpY1Rlc3RzKEJh
c2UpOgorICAgIGRlZiB0ZXN0X2J1Z19mb3JtYXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLCAnQlVHMTIzNCA6IGZhaWx1cmVzL2V4
cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19idWdpZChz
ZWxmKToKKyAgICAgICAgIyBUaGlzIHNob3VsZCBsb2cgYSBub24tZmF0YWwgZXJyb3IuCisgICAg
ICAgIHNlbGYucGFyc2VfZXhwKCdTTE9XIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0g
VEVYVCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBsZW4oc2VsZi5f
ZXhwLmdldF9ub25fZmF0YWxfZXJyb3JzKCkpLCAxKQorCisgICAgZGVmIHRlc3Rfc2xvd19hbmRf
dGltZW91dChzZWxmKToKKyAgICAgICAgIyBBIHRlc3QgY2Fubm90IGJlIFNMT1cgYW5kIGV4cGVj
dGVkIHRvIFRJTUVPVVQuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNl
bGYucGFyc2VfZXhwLAorICAgICAgICAgICAgJ0JVR19URVNUIFNMT1cgOiBmYWlsdXJlcy9leHBl
Y3RlZC90aW1lb3V0Lmh0bWwgPSBUSU1FT1VUJykKKworICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmUo
c2VsZik6CisgICAgICAgICMgQ2FuJ3QgbGludCBhIGZpbGUgdy8gJ1JFQkFTRUxJTkUnIGluIGl0
LgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwK
KyAgICAgICAgICAgICdCVUdfVEVTVCBSRUJBU0VMSU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4
dC5odG1sID0gVEVYVCcsCisgICAgICAgICAgICBpc19saW50X21vZGU9VHJ1ZSkKKworICAgIGRl
ZiB0ZXN0X2R1cGxpY2F0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNl
RXJyb3IsIHNlbGYucGFyc2VfZXhwLCAiIiIKK0JVR19FWFAgOiBmYWlsdXJlcy9leHBlY3RlZC90
ZXh0Lmh0bWwgPSBURVhUCitCVUdfRVhQIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0g
SU1BR0UiIiIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5w
YXJzZV9leHAsCisgICAgICAgICAgICBzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSwgb3Zl
cnJpZGVzPSIiIgorQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0g
VEVYVAorQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0Ui
IiIsICkKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfZmlsZShzZWxmKToKKyAgICAgICAgIyBUaGlz
IHNob3VsZCBsb2cgYSBub24tZmF0YWwgZXJyb3IuCisgICAgICAgIHNlbGYucGFyc2VfZXhwKCdC
VUdfVEVTVCA6IG1pc3NpbmdfZmlsZS5odG1sID0gVEVYVCcpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGVuKHNlbGYuX2V4cC5nZXRfbm9uX2ZhdGFsX2Vycm9ycygpKSwgMSkKKworCitjbGFz
cyBQcmVjZWRlbmNlVGVzdHMoQmFzZSk6CisgICAgZGVmIHRlc3RfZmlsZV9vdmVyX2RpcmVjdG9y
eShzZWxmKToKKyAgICAgICAgIyBUaGlzIHRlc3RzIGhhbmRsaW5nIHByZWNlZGVuY2Ugb2Ygc3Bl
Y2lmaWMgbGluZXMgb3ZlciBkaXJlY3RvcmllcworICAgICAgICAjIGFuZCB0ZXN0cyBleHBlY3Rh
dGlvbnMgY292ZXJpbmcgZW50aXJlIGRpcmVjdG9yaWVzLgorICAgICAgICBleHBfc3RyID0gIiIi
CitCVUdYIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAorQlVHWCBXT05URklY
IDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQorIiIiCisgICAgICAgIHNlbGYucGFyc2VfZXhw
KGV4cF9zdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4
dC5odG1sJywgVEVYVCkKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3Rl
ZC9jcmFzaC5odG1sJywgSU1BR0UpCisKKyAgICAgICAgZXhwX3N0ciA9ICIiIgorQlVHWCBXT05U
RklYIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQorQlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVk
L3RleHQuaHRtbCA9IFRFWFQKKyIiIgorICAgICAgICBzZWxmLnBhcnNlX2V4cChleHBfc3RyKQor
ICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIFRF
WFQpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRt
bCcsIElNQUdFKQorCisgICAgZGVmIHRlc3RfYW1iaWd1b3VzKHNlbGYpOgorICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgIiIiCitCVUdfVEVTVCBS
RUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKK0JVR19URVNUIFdJTiA6IHBhc3Nlcy90
ZXh0Lmh0bWwgPSBGQUlMCisiIiIpCisKKyAgICBkZWYgdGVzdF9tb3JlX21vZGlmaWVycyhzZWxm
KToKKyAgICAgICAgZXhwX3N0ciA9ICIiIgorQlVHX1RFU1QgUkVMRUFTRSA6IHBhc3Nlcy90ZXh0
Lmh0bWwgPSBQQVNTCitCVUdfVEVTVCBXSU4gUkVMRUFTRSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBU
RVhUCisiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJz
ZV9leHAsIGV4cF9zdHIpCisKKyAgICBkZWYgdGVzdF9vcmRlcl9pbl9maWxlKHNlbGYpOgorICAg
ICAgICBleHBfc3RyID0gIiIiCitCVUdfVEVTVCBXSU4gUkVMRUFTRSA6IHBhc3Nlcy90ZXh0Lmh0
bWwgPSBURVhUCitCVUdfVEVTVCBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKKyIi
IgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwg
ZXhwX3N0cikKKworICAgIGRlZiB0ZXN0X21hY3JvX292ZXJyaWRlcyhzZWxmKToKKyAgICAgICAg
ZXhwX3N0ciA9ICIiIgorQlVHX1RFU1QgV0lOIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKK0JV
R19URVNUIFhQIDogcGFzc2VzL3RleHQuaHRtbCA9IFRFWFQKKyIiIgorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgZXhwX3N0cikKKworCitjbGFz
cyBSZWJhc2VsaW5pbmdUZXN0KEJhc2UpOgorICAgICIiIlRlc3QgcmViYXNlbGluaW5nLXNwZWNp
ZmljIGZ1bmN0aW9uYWxpdHkuIiIiCisgICAgZGVmIGFzc2VydFJlbW92ZShzZWxmLCBpbnB1dF9l
eHBlY3RhdGlvbnMsIHRlc3RzLCBleHBlY3RlZF9leHBlY3RhdGlvbnMpOgorICAgICAgICBzZWxm
LnBhcnNlX2V4cChpbnB1dF9leHBlY3RhdGlvbnMpCisgICAgICAgIGFjdHVhbF9leHBlY3RhdGlv
bnMgPSBzZWxmLl9leHAucmVtb3ZlX3JlYmFzZWxpbmVkX3Rlc3RzKHRlc3RzKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2V4cGVjdGF0aW9ucywgYWN0dWFsX2V4cGVjdGF0aW9u
cykKKworICAgIGRlZiB0ZXN0X3JlbW92ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSZW1v
dmUoJ0JVR1ggUkVCQVNFTElORSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFRc
bicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR1kgOiBmYWlsdXJlcy9leHBlY3RlZC9p
bWFnZS5odG1sID0gSU1BR0VcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR1ogUkVC
QVNFTElORSA6IGZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwgPSBDUkFTSFxuJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgWydmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR1kgOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5o
dG1sID0gSU1BR0VcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR1ogUkVCQVNFTElO
RSA6IGZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwgPSBDUkFTSFxuJykKKworICAgIGRlZiB0
ZXN0X25vX2dldF9yZWJhc2VsaW5pbmdfZmFpbHVyZXMoc2VsZik6CisgICAgICAgIHNlbGYucGFy
c2VfZXhwKHNlbGYuZ2V0X2Jhc2ljX2V4cGVjdGF0aW9ucygpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihzZWxmLl9leHAuZ2V0X3JlYmFzZWxpbmluZ19mYWlsdXJlcygpKSwgMCkKKwor
CitjbGFzcyBNb2RpZmllclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAo
c2VsZik6CisgICAgICAgIHBvcnRfb2JqID0gcG9ydC5nZXQoJ3Rlc3Qtd2luLXhwJywgTm9uZSkK
KyAgICAgICAgc2VsZi5jb25maWcgPSBwb3J0X29iai50ZXN0X2NvbmZpZ3VyYXRpb24oKQorICAg
ICAgICBzZWxmLm1hdGNoZXIgPSBNb2RpZmllck1hdGNoZXIoc2VsZi5jb25maWcpCisKKyAgICBk
ZWYgbWF0Y2goc2VsZiwgbW9kaWZpZXJzLCBleHBlY3RlZF9udW1fbWF0Y2hlcz0tMSwgdmFsdWVz
PU5vbmUsIG51bV9lcnJvcnM9MCk6CisgICAgICAgIG1hdGNoZXIgPSBzZWxmLm1hdGNoZXIKKyAg
ICAgICAgaWYgdmFsdWVzOgorICAgICAgICAgICAgbWF0Y2hlciA9IE1vZGlmaWVyTWF0Y2hlcihz
ZWxmLkZha2VUZXN0Q29uZmlndXJhdGlvbih2YWx1ZXMpKQorICAgICAgICBtYXRjaF9yZXN1bHQg
PSBtYXRjaGVyLm1hdGNoKG1vZGlmaWVycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
bWF0Y2hfcmVzdWx0Lndhcm5pbmdzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
bWF0Y2hfcmVzdWx0LmVycm9ycyksIG51bV9lcnJvcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobWF0Y2hfcmVzdWx0Lm51bV9tYXRjaGVzLCBleHBlY3RlZF9udW1fbWF0Y2hlcywKKyAgICAg
ICAgICAgICAnbWF0Y2goJXMsICVzKSByZXR1cm5lZCAtPiAlZCwgZXhwZWN0ZWQgJWQnICUKKyAg
ICAgICAgICAgICAobW9kaWZpZXJzLCBzdHIoc2VsZi5jb25maWcudmFsdWVzKCkpLAorICAgICAg
ICAgICAgICBtYXRjaF9yZXN1bHQubnVtX21hdGNoZXMsIGV4cGVjdGVkX251bV9tYXRjaGVzKSkK
KworICAgIGRlZiB0ZXN0X2JhZF9tYXRjaF9tb2RpZmllcihzZWxmKToKKyAgICAgICAgc2VsZi5t
YXRjaChbJ2ZvbyddLCBudW1fZXJyb3JzPTEpCisKKyAgICBkZWYgdGVzdF9ub25lKHNlbGYpOgor
ICAgICAgICBzZWxmLm1hdGNoKFtdLCAwKQorCisgICAgZGVmIHRlc3Rfb25lKHNlbGYpOgorICAg
ICAgICBzZWxmLm1hdGNoKFsneHAnXSwgMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3dpbiddLCAx
KQorICAgICAgICBzZWxmLm1hdGNoKFsncmVsZWFzZSddLCAxKQorICAgICAgICBzZWxmLm1hdGNo
KFsnY3B1J10sIDEpCisgICAgICAgIHNlbGYubWF0Y2goWyd4ODYnXSwgMSkKKyAgICAgICAgc2Vs
Zi5tYXRjaChbJ2xlb3BhcmQnXSwgLTEpCisgICAgICAgIHNlbGYubWF0Y2goWydncHUnXSwgLTEp
CisgICAgICAgIHNlbGYubWF0Y2goWydkZWJ1ZyddLCAtMSkKKworICAgIGRlZiB0ZXN0X3R3byhz
ZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ3hwJywgJ3JlbGVhc2UnXSwgMikKKyAgICAgICAg
c2VsZi5tYXRjaChbJ3dpbjcnLCAncmVsZWFzZSddLCAtMSkKKyAgICAgICAgc2VsZi5tYXRjaChb
J3dpbjcnLCAneHAnXSwgMSkKKworICAgIGRlZiB0ZXN0X3RocmVlKHNlbGYpOgorICAgICAgICBz
ZWxmLm1hdGNoKFsnd2luNycsICd4cCcsICdyZWxlYXNlJ10sIDIpCisgICAgICAgIHNlbGYubWF0
Y2goWyd4cCcsICdkZWJ1ZycsICd4ODYnXSwgLTEpCisgICAgICAgIHNlbGYubWF0Y2goWyd4cCcs
ICdyZWxlYXNlJywgJ3g4NiddLCAzKQorICAgICAgICBzZWxmLm1hdGNoKFsneHAnLCAnY3B1Jywg
J3JlbGVhc2UnXSwgMykKKworICAgIGRlZiB0ZXN0X2ZvdXIoc2VsZik6CisgICAgICAgIHNlbGYu
bWF0Y2goWyd4cCcsICdyZWxlYXNlJywgJ2NwdScsICd4ODYnXSwgNCkKKyAgICAgICAgc2VsZi5t
YXRjaChbJ3dpbjcnLCAneHAnLCAncmVsZWFzZScsICdjcHUnXSwgMykKKyAgICAgICAgc2VsZi5t
YXRjaChbJ3dpbjcnLCAneHAnLCAnZGVidWcnLCAnY3B1J10sIC0xKQorCisgICAgZGVmIHRlc3Rf
Y2FzZV9pbnNlbnNpdGl2aXR5KHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnV2luJ10sIG51
bV9lcnJvcnM9MSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ1dJTiddLCBudW1fZXJyb3JzPTEpCisg
ICAgICAgIHNlbGYubWF0Y2goWyd3aW4nXSwgMSkKKworICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZXMo
c2VsZik6CisgICAgICAgIHNlbGYubWF0Y2goWydyZWxlYXNlJywgJ3JlbGVhc2UnXSwgbnVtX2Vy
cm9ycz0xKQorICAgICAgICBzZWxmLm1hdGNoKFsnd2luJywgJ3hwJ10sIG51bV9lcnJvcnM9MSkK
KyAgICAgICAgc2VsZi5tYXRjaChbJ3hwJywgJ3hwJ10sIG51bV9lcnJvcnM9MSkKKyAgICAgICAg
c2VsZi5tYXRjaChbJ3hwJywgJ3JlbGVhc2UnLCAneHAnLCAncmVsZWFzZSddLCBudW1fZXJyb3Jz
PTIpCisgICAgICAgIHNlbGYubWF0Y2goWydyZWJhc2VsaW5lJywgJ3JlYmFzZWxpbmUnXSwgbnVt
X2Vycm9ycz0xKQorCisgICAgZGVmIHRlc3RfdW5rbm93bl9vcHRpb24oc2VsZik6CisgICAgICAg
IHNlbGYubWF0Y2goWyd2bXMnXSwgbnVtX2Vycm9ycz0xKQorCisgICAgZGVmIHRlc3RfZHVwbGlj
YXRlX2J1Z3Moc2VsZik6CisgICAgICAgICMgQlVHKiByZWdleGVzIGNhbiBhcHBlYXIgbXVsdGlw
bGUgdGltZXMuCisgICAgICAgIHNlbGYubWF0Y2goWydidWdmb28nLCAnYnVnYmFyJ10sIDApCisK
KyAgICBkZWYgdGVzdF9yZWdleGVzX2FyZV9pZ25vcmVkKHNlbGYpOgorICAgICAgICBzZWxmLm1h
dGNoKFsnYnVnMTIzeHknLCAncmViYXNlbGluZScsICd3b250Zml4JywgJ3Nsb3cnLCAnc2tpcCdd
LCAwKQorCisgICAgZGVmIHRlc3Rfbm9uZV9pc19pbnZhbGlkKHNlbGYpOgorICAgICAgICBzZWxm
Lm1hdGNoKFsnbm9uZSddLCBudW1fZXJyb3JzPTEpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9l
eHBlY3RhdGlvbnNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDApCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywxMSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAotIiIiVW5pdCB0ZXN0cyBmb3IgdGVzdF9leHBlY3RhdGlvbnMucHkuIiIiCi0K
IGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9y
dAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgYmFzZQotZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UudGVzdF9leHBlY3RhdGlvbnMgaW1wb3J0
ICoKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2V4cGVjdGF0aW9ucyBp
bXBvcnQgKgogCiBjbGFzcyBGdW5jdGlvbnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBk
ZWYgdGVzdF9yZXN1bHRfd2FzX2V4cGVjdGVkKHNlbGYpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZmFpbHVyZXMucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZmFpbHVy
ZXMucHkJKHJldmlzaW9uIDkwNTIwKQkoZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5OjkwNTIwKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZmFpbHVyZXMucHkJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyMjQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyIiIkNsYXNzZXMgZm9yIGZhaWx1cmVzIHRoYXQgb2NjdXIgZHVyaW5n
IHRlc3RzLiIiIgorCitpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKKworaW1wb3J0IGNQaWNrbGUK
KworCisjIEZJWE1FOiBUaGlzIGlzIGJhY2t3YXJkcy4gIEVhY2ggVGVzdEZhaWx1cmUgc3ViY2xh
c3Mgc2hvdWxkIGtub3cgd2hhdAorIyB0ZXN0X2V4cGVjdGF0aW9uIHR5cGUgaXQgY29ycmVzcG9u
ZHMgdG9vLiAgVGhlbiB0aGlzIG1ldGhvZCBqdXN0CisjIGNvbGxlY3RzIHRoZW0gYWxsIGZyb20g
dGhlIGZhaWx1cmUgbGlzdCBhbmQgcmV0dXJucyB0aGUgd29yc3Qgb25lLgorZGVmIGRldGVybWlu
ZV9yZXN1bHRfdHlwZShmYWlsdXJlX2xpc3QpOgorICAgICIiIlRha2VzIGEgc2V0IG9mIHRlc3Rf
ZmFpbHVyZXMgYW5kIHJldHVybnMgd2hpY2ggcmVzdWx0IHR5cGUgYmVzdCBmaXRzCisgICAgdGhl
IGxpc3Qgb2YgZmFpbHVyZXMuICJCZXN0IGZpdHMiIG1lYW5zIHdlIHVzZSB0aGUgd29yc3QgdHlw
ZSBvZiBmYWlsdXJlLgorCisgICAgUmV0dXJuczoKKyAgICAgIG9uZSBvZiB0aGUgdGVzdF9leHBl
Y3RhdGlvbnMgcmVzdWx0IHR5cGVzIC0gUEFTUywgVEVYVCwgQ1JBU0gsIGV0Yy4iIiIKKworICAg
IGlmIG5vdCBmYWlsdXJlX2xpc3Qgb3IgbGVuKGZhaWx1cmVfbGlzdCkgPT0gMDoKKyAgICAgICAg
cmV0dXJuIHRlc3RfZXhwZWN0YXRpb25zLlBBU1MKKworICAgIGZhaWx1cmVfdHlwZXMgPSBbdHlw
ZShmKSBmb3IgZiBpbiBmYWlsdXJlX2xpc3RdCisgICAgaWYgRmFpbHVyZUNyYXNoIGluIGZhaWx1
cmVfdHlwZXM6CisgICAgICAgIHJldHVybiB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSAorICAgIGVs
aWYgRmFpbHVyZVRpbWVvdXQgaW4gZmFpbHVyZV90eXBlczoKKyAgICAgICAgcmV0dXJuIHRlc3Rf
ZXhwZWN0YXRpb25zLlRJTUVPVVQKKyAgICBlbGlmIChGYWlsdXJlTWlzc2luZ1Jlc3VsdCBpbiBm
YWlsdXJlX3R5cGVzIG9yCisgICAgICAgICAgRmFpbHVyZU1pc3NpbmdJbWFnZSBpbiBmYWlsdXJl
X3R5cGVzIG9yCisgICAgICAgICAgRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2ggaW4gZmFpbHVyZV90
eXBlcyBvcgorICAgICAgICAgIEZhaWx1cmVNaXNzaW5nQXVkaW8gaW4gZmFpbHVyZV90eXBlcyk6
CisgICAgICAgIHJldHVybiB0ZXN0X2V4cGVjdGF0aW9ucy5NSVNTSU5HCisgICAgZWxzZToKKyAg
ICAgICAgaXNfdGV4dF9mYWlsdXJlID0gRmFpbHVyZVRleHRNaXNtYXRjaCBpbiBmYWlsdXJlX3R5
cGVzCisgICAgICAgIGlzX2ltYWdlX2ZhaWx1cmUgPSAoRmFpbHVyZUltYWdlSGFzaEluY29ycmVj
dCBpbiBmYWlsdXJlX3R5cGVzIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFpbHVy
ZUltYWdlSGFzaE1pc21hdGNoIGluIGZhaWx1cmVfdHlwZXMpCisgICAgICAgIGlzX3JlZnRlc3Rf
ZmFpbHVyZSA9IChGYWlsdXJlUmVmdGVzdE1pc21hdGNoIGluIGZhaWx1cmVfdHlwZXMgb3IKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2hEaWROb3RP
Y2N1ciBpbiBmYWlsdXJlX3R5cGVzKQorICAgICAgICBpc19hdWRpb19mYWlsdXJlID0gKEZhaWx1
cmVBdWRpb01pc21hdGNoIGluIGZhaWx1cmVfdHlwZXMpCisgICAgICAgIGlmIGlzX3RleHRfZmFp
bHVyZSBhbmQgaXNfaW1hZ2VfZmFpbHVyZToKKyAgICAgICAgICAgIHJldHVybiB0ZXN0X2V4cGVj
dGF0aW9ucy5JTUFHRV9QTFVTX1RFWFQKKyAgICAgICAgZWxpZiBpc190ZXh0X2ZhaWx1cmU6Cisg
ICAgICAgICAgICByZXR1cm4gdGVzdF9leHBlY3RhdGlvbnMuVEVYVAorICAgICAgICBlbGlmIGlz
X2ltYWdlX2ZhaWx1cmUgb3IgaXNfcmVmdGVzdF9mYWlsdXJlOgorICAgICAgICAgICAgcmV0dXJu
IHRlc3RfZXhwZWN0YXRpb25zLklNQUdFCisgICAgICAgIGVsaWYgaXNfYXVkaW9fZmFpbHVyZToK
KyAgICAgICAgICAgIHJldHVybiB0ZXN0X2V4cGVjdGF0aW9ucy5BVURJTworICAgICAgICBlbHNl
OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5jbGFzc2lmaWFibGUgc2V0IG9mIGZh
aWx1cmVzOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc3RyKGZhaWx1cmVfdHlw
ZXMpKQorCisKK2NsYXNzIFRlc3RGYWlsdXJlKG9iamVjdCk6CisgICAgIiIiQWJzdHJhY3QgYmFz
ZSBjbGFzcyB0aGF0IGRlZmluZXMgdGhlIGZhaWx1cmUgaW50ZXJmYWNlLiIiIgorCisgICAgQHN0
YXRpY21ldGhvZAorICAgIGRlZiBsb2FkcyhzKToKKyAgICAgICAgIiIiQ3JlYXRlcyBhIFRlc3RG
YWlsdXJlIG9iamVjdCBmcm9tIHRoZSBzcGVjaWZpZWQgc3RyaW5nLiIiIgorICAgICAgICByZXR1
cm4gY1BpY2tsZS5sb2FkcyhzKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBtZXNzYWdl
KCk6CisgICAgICAgICIiIlJldHVybnMgYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgZmFpbHVyZSBp
biBtb3JlIGRldGFpbC4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisg
ICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3Nf
Xy5fX25hbWVfXyA9PSBvdGhlci5fX2NsYXNzX18uX19uYW1lX18KKworICAgIGRlZiBfX25lX18o
c2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18uX19uYW1lX18gIT0g
b3RoZXIuX19jbGFzc19fLl9fbmFtZV9fCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAg
ICAgIHJldHVybiBoYXNoKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKQorCisgICAgZGVmIGR1bXBz
KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBzdHJpbmcvSlNPTiByZXByZXNlbnRhdGlv
biBvZiBhIFRlc3RGYWlsdXJlLiIiIgorICAgICAgICByZXR1cm4gY1BpY2tsZS5kdW1wcyhzZWxm
KQorCisgICAgZGVmIGRyaXZlcl9uZWVkc19yZXN0YXJ0KHNlbGYpOgorICAgICAgICAiIiJSZXR1
cm5zIFRydWUgaWYgd2Ugc2hvdWxkIGtpbGwgRHVtcFJlbmRlclRyZWUvV2ViS2l0VGVzdFJ1bm5l
ciBiZWZvcmUgdGhlIG5leHQgdGVzdC4iIiIKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKworY2xh
c3MgRmFpbHVyZVRpbWVvdXQoVGVzdEZhaWx1cmUpOgorICAgICIiIlRlc3QgdGltZWQgb3V0LiAg
V2UgYWxzbyB3YW50IHRvIHJlc3RhcnQgRHVtcFJlbmRlclRyZWUgaWYgdGhpcyBoYXBwZW5zLiIi
IgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpc19yZWZ0ZXN0PUZhbHNlKToKKyAgICAgICAgc2Vs
Zi5pc19yZWZ0ZXN0ID0gaXNfcmVmdGVzdAorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBt
ZXNzYWdlKCk6CisgICAgICAgIHJldHVybiAiVGVzdCB0aW1lZCBvdXQiCisKKyAgICBkZWYgZHJp
dmVyX25lZWRzX3Jlc3RhcnQoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKworY2xhc3Mg
RmFpbHVyZUNyYXNoKFRlc3RGYWlsdXJlKToKKyAgICAiIiJEdW1wUmVuZGVyVHJlZSBjcmFzaGVk
LiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpc19yZWZ0ZXN0PUZhbHNlKToKKyAgICAgICAg
c2VsZi5pc19yZWZ0ZXN0ID0gaXNfcmVmdGVzdAorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRl
ZiBtZXNzYWdlKCk6CisgICAgICAgICMgRklYTUU6IFRoaXMgaXMgd3JvbmcgZm9yIFdlYktpdDIg
KHdoaWNoIHVzZXMgV2ViS2l0VGVzdFJ1bm5lcikuCisgICAgICAgIHJldHVybiAiRHVtcFJlbmRl
clRyZWUgY3Jhc2hlZCIKKworICAgIGRlZiBkcml2ZXJfbmVlZHNfcmVzdGFydChzZWxmKToKKyAg
ICAgICAgcmV0dXJuIFRydWUKKworCitjbGFzcyBGYWlsdXJlTWlzc2luZ1Jlc3VsdChUZXN0RmFp
bHVyZSk6CisgICAgIiIiRXhwZWN0ZWQgcmVzdWx0IHdhcyBtaXNzaW5nLiIiIgorCisgICAgQHN0
YXRpY21ldGhvZAorICAgIGRlZiBtZXNzYWdlKCk6CisgICAgICAgIHJldHVybiAiTm8gZXhwZWN0
ZWQgcmVzdWx0cyBmb3VuZCIKKworCitjbGFzcyBGYWlsdXJlVGV4dE1pc21hdGNoKFRlc3RGYWls
dXJlKToKKyAgICAiIiJUZXh0IGRpZmYgb3V0cHV0IGZhaWxlZC4iIiIKKworICAgIEBzdGF0aWNt
ZXRob2QKKyAgICBkZWYgbWVzc2FnZSgpOgorICAgICAgICByZXR1cm4gIlRleHQgZGlmZiBtaXNt
YXRjaCIKKworCitjbGFzcyBGYWlsdXJlTWlzc2luZ0ltYWdlSGFzaChUZXN0RmFpbHVyZSk6Cisg
ICAgIiIiQWN0dWFsIHJlc3VsdCBoYXNoIHdhcyBtaXNzaW5nLiIiIgorCisgICAgQHN0YXRpY21l
dGhvZAorICAgIGRlZiBtZXNzYWdlKCk6CisgICAgICAgIHJldHVybiAiTm8gZXhwZWN0ZWQgaW1h
Z2UgaGFzaCBmb3VuZCIKKworCitjbGFzcyBGYWlsdXJlTWlzc2luZ0ltYWdlKFRlc3RGYWlsdXJl
KToKKyAgICAiIiJBY3R1YWwgcmVzdWx0IGltYWdlIHdhcyBtaXNzaW5nLiIiIgorCisgICAgQHN0
YXRpY21ldGhvZAorICAgIGRlZiBtZXNzYWdlKCk6CisgICAgICAgIHJldHVybiAiTm8gZXhwZWN0
ZWQgaW1hZ2UgZm91bmQiCisKKworY2xhc3MgRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoKFRlc3RG
YWlsdXJlKToKKyAgICAiIiJJbWFnZSBoYXNoZXMgZGlkbid0IG1hdGNoLiIiIgorCisgICAgQHN0
YXRpY21ldGhvZAorICAgIGRlZiBtZXNzYWdlKCk6CisgICAgICAgIHJldHVybiAiSW1hZ2UgbWlz
bWF0Y2giCisKKworY2xhc3MgRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdChUZXN0RmFpbHVyZSk6
CisgICAgIiIiQWN0dWFsIHJlc3VsdCBoYXNoIGlzIGluY29ycmVjdC4iIiIKKworICAgIEBzdGF0
aWNtZXRob2QKKyAgICBkZWYgbWVzc2FnZSgpOgorICAgICAgICByZXR1cm4gIkltYWdlcyBtYXRj
aCwgZXhwZWN0ZWQgaW1hZ2UgaGFzaCBpbmNvcnJlY3QuICIKKworCitjbGFzcyBGYWlsdXJlUmVm
dGVzdE1pc21hdGNoKFRlc3RGYWlsdXJlKToKKyAgICAiIiJUaGUgcmVzdWx0IGRpZG4ndCBtYXRj
aCB0aGUgcmVmZXJlbmNlIHJlbmRlcmluZy4iIiIKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBk
ZWYgbWVzc2FnZSgpOgorICAgICAgICByZXR1cm4gIk1pc21hdGNoIHdpdGggcmVmZXJlbmNlIgor
CisKK2NsYXNzIEZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2hEaWROb3RPY2N1cihUZXN0RmFpbHVyZSk6
CisgICAgIiIiVW5leHBlY3RlZCBtYXRjaCBiZXR3ZWVuIHRoZSByZXN1bHQgYW5kIHRoZSByZWZl
cmVuY2UgcmVuZGVyaW5nLiIiIgorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBtZXNzYWdl
KCk6CisgICAgICAgIHJldHVybiAiTWlzbWF0Y2ggd2l0aCB0aGUgcmVmZXJlbmNlIGRpZCBub3Qg
b2NjdXIiCisKKworY2xhc3MgRmFpbHVyZU1pc3NpbmdBdWRpbyhUZXN0RmFpbHVyZSk6CisgICAg
IiIiQWN0dWFsIHJlc3VsdCBpbWFnZSB3YXMgbWlzc2luZy4iIiIKKworICAgIEBzdGF0aWNtZXRo
b2QKKyAgICBkZWYgbWVzc2FnZSgpOgorICAgICAgICByZXR1cm4gIk5vIGV4cGVjdGVkIGF1ZGlv
IGZvdW5kIgorCisKK2NsYXNzIEZhaWx1cmVBdWRpb01pc21hdGNoKFRlc3RGYWlsdXJlKToKKyAg
ICAiIiJBdWRpbyBmaWxlcyBkaWRuJ3QgbWF0Y2guIiIiCisKKyAgICBAc3RhdGljbWV0aG9kCisg
ICAgZGVmIG1lc3NhZ2UoKToKKyAgICAgICAgcmV0dXJuICJBdWRpbyBtaXNtYXRjaCIKKworCisj
IENvbnZlbmllbnQgY29sbGVjdGlvbiBvZiBhbGwgZmFpbHVyZSBjbGFzc2VzIGZvciBhbnl0aGlu
ZyB0aGF0IG1pZ2h0CisjIG5lZWQgdG8gZW51bWVyYXRlIG92ZXIgdGhlbSBhbGwuCitBTExfRkFJ
TFVSRV9DTEFTU0VTID0gKEZhaWx1cmVUaW1lb3V0LCBGYWlsdXJlQ3Jhc2gsIEZhaWx1cmVNaXNz
aW5nUmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICBGYWlsdXJlVGV4dE1pc21hdGNoLCBG
YWlsdXJlTWlzc2luZ0ltYWdlSGFzaCwKKyAgICAgICAgICAgICAgICAgICAgICAgRmFpbHVyZU1p
c3NpbmdJbWFnZSwgRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoLAorICAgICAgICAgICAgICAgICAg
ICAgICBGYWlsdXJlSW1hZ2VIYXNoSW5jb3JyZWN0LCBGYWlsdXJlUmVmdGVzdE1pc21hdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgICBGYWlsdXJlUmVmdGVzdE1pc21hdGNoRGlkTm90T2NjdXIp
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9m
YWlsdXJlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9tb2RlbHMvdGVzdF9mYWlsdXJlcy5weQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2ZhaWx1cmVzLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0yNywxMiArMjcsMTAgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAKLSIiIkNsYXNzZXMgZm9yIGZhaWx1cmVzIHRoYXQgb2NjdXIgZHVyaW5nIHRlc3RzLiIiIgot
Ci1pbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKLQogaW1wb3J0IGNQaWNrbGUKIAorZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucworCiAKICMg
RklYTUU6IFRoaXMgaXMgYmFja3dhcmRzLiAgRWFjaCBUZXN0RmFpbHVyZSBzdWJjbGFzcyBzaG91
bGQga25vdyB3aGF0CiAjIHRlc3RfZXhwZWN0YXRpb24gdHlwZSBpdCBjb3JyZXNwb25kcyB0b28u
ICBUaGVuIHRoaXMgbWV0aG9kIGp1c3QKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL21vZGVscy90ZXN0X2ZhaWx1cmVzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2ZhaWx1cmVz
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA5MDUyMCkJKGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlc191bml0dGVzdC5weTo5
MDUyMCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0
X2ZhaWx1cmVzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjcgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisiIiIiVGVzdHMgY29kZSBwYXRocyBub3QgY292ZXJlZCBieSB0aGUgcmVn
dWxhciB1bml0IHRlc3RzLiIiIgorCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UudGVzdF9mYWlsdXJlcyBpbXBvcnQgKgorCisKK2Ns
YXNzIFRlc3RGYWlsdXJlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBhc3NlcnRf
bG9hZHMoc2VsZiwgY2xzKToKKyAgICAgICAgZmFpbHVyZV9vYmogPSBjbHMoKQorICAgICAgICBz
ID0gZmFpbHVyZV9vYmouZHVtcHMoKQorICAgICAgICBuZXdfZmFpbHVyZV9vYmogPSBUZXN0RmFp
bHVyZS5sb2FkcyhzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShuZXdfZmFp
bHVyZV9vYmosIGNscykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmYWlsdXJlX29iaiwg
bmV3X2ZhaWx1cmVfb2JqKQorCisgICAgICAgICMgQWxzbyB0ZXN0IHRoYXQgIT0gaXMgaW1wbGVt
ZW50ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZmFpbHVyZV9vYmogIT0gbmV3X2ZhaWx1
cmVfb2JqKQorCisgICAgZGVmIHRlc3RfdW5rbm93bl9mYWlsdXJlX3R5cGUoc2VsZik6CisgICAg
ICAgIGNsYXNzIFVua25vd25GYWlsdXJlKFRlc3RGYWlsdXJlKToKKyAgICAgICAgICAgIHBhc3MK
KworICAgICAgICBmYWlsdXJlX29iaiA9IFVua25vd25GYWlsdXJlKCkKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZGV0ZXJtaW5lX3Jlc3VsdF90eXBlLCBbZmFpbHVyZV9v
YmpdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBmYWls
dXJlX29iai5tZXNzYWdlKQorCisgICAgZGVmIHRlc3RfbG9hZHMoc2VsZik6CisgICAgICAgIGZv
ciBjIGluIEFMTF9GQUlMVVJFX0NMQVNTRVM6CisgICAgICAgICAgICBzZWxmLmFzc2VydF9sb2Fk
cyhjKQorCisgICAgZGVmIHRlc3RfZXF1YWxzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKEZhaWx1cmVDcmFzaCgpLCBGYWlsdXJlQ3Jhc2goKSkKKyAgICAgICAgc2VsZi5hc3NlcnRO
b3RFcXVhbChGYWlsdXJlQ3Jhc2goKSwgRmFpbHVyZVRpbWVvdXQoKSkKKyAgICAgICAgY3Jhc2hf
c2V0ID0gc2V0KFtGYWlsdXJlQ3Jhc2goKSwgRmFpbHVyZUNyYXNoKCldKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihjcmFzaF9zZXQpLCAxKQorICAgICAgICAjIFRoZSBoYXNoIGhhcHBl
bnMgdG8gYmUgdGhlIG5hbWUgb2YgdGhlIGNsYXNzLCBidXQgc2V0cyBzdGlsbCB3b3JrOgorICAg
ICAgICBjcmFzaF9zZXQgPSBzZXQoW0ZhaWx1cmVDcmFzaCgpLCAiRmFpbHVyZUNyYXNoIl0pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNyYXNoX3NldCksIDIpCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9mYWlsdXJlc191bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9t
b2RlbHMvdGVzdF9mYWlsdXJlc191bml0dGVzdC5weQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2ZhaWx1cmVzX3VuaXR0ZXN0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMSArMjYsOSBAQAogIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KIAotIiIiIlRlc3RzIGNvZGUgcGF0aHMgbm90IGNvdmVyZWQgYnkgdGhlIHJl
Z3VsYXIgdW5pdCB0ZXN0cy4iIiIKLQogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLnRlc3RfZmFpbHVyZXMgaW1wb3J0ICoKK2Zyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2ZhaWx1cmVzIGltcG9ydCAqCiAKIAog
Y2xhc3MgVGVzdEZhaWx1cmVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9pbnB1dC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9p
bnB1dC5weQkocmV2aXNpb24gOTA1MjApCShmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfaW5wdXQucHk6OTA1MjApCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9pbnB1dC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdo
dCAoQykgMjAxMCBHYWJvciBSYXBjc2FueWkgKHJnYWJvckBpbmYudS1zemVnZWQuaHUpLCBVbml2
ZXJzaXR5IG9mIFN6ZWdlZAorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6
CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitjbGFzcyBUZXN0SW5wdXQ6
CisgICAgIiIiR3JvdXBzIGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdCBmb3IgZWFzeSBwYXNzaW5n
IG9mIGRhdGEuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9uYW1lLCB0aW1lb3V0
KToKKyAgICAgICAgIiIiSG9sZHMgdGhlIGlucHV0IHBhcmFtZXRlcnMgZm9yIGEgdGVzdC4KKyAg
ICAgICAgQXJnczoKKyAgICAgICAgICB0ZXN0OiBuYW1lIG9mIHRlc3QgKG5vdCBhbiBhYnNvbHV0
ZSBwYXRoISkKKyAgICAgICAgICB0aW1lb3V0OiBUaW1lb3V0IGluIG1zZWNzIHRoZSBkcml2ZXIg
c2hvdWxkIHVzZSB3aGlsZSBydW5uaW5nIHRoZSB0ZXN0CisgICAgICAgICAgIiIiCisgICAgICAg
IHNlbGYudGVzdF9uYW1lID0gdGVzdF9uYW1lCisgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVv
dXQKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJUZXN0SW5wdXQo
JyVzJywgJWQpIiAlIChzZWxmLnRlc3RfbmFtZSwgc2VsZi50aW1lb3V0KQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcmVzdWx0cy5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVz
dF9yZXN1bHRzLnB5CShyZXZpc2lvbiA5MDUyMCkJKGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRzLnB5OjkwNTIwKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcmVzdWx0cy5w
eQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisj
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1w
b3J0IGNQaWNrbGUKKworaW1wb3J0IHRlc3RfZmFpbHVyZXMKKworCitjbGFzcyBUZXN0UmVzdWx0
KG9iamVjdCk6CisgICAgIiIiRGF0YSBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzdWx0cyBvZiBh
IHNpbmdsZSB0ZXN0LiIiIgorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBsb2FkcyhzdHIp
OgorICAgICAgICByZXR1cm4gY1BpY2tsZS5sb2FkcyhzdHIpCisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgdGVzdF9uYW1lLCBmYWlsdXJlcz1Ob25lLCB0ZXN0X3J1bl90aW1lPU5vbmUsIGhhc19z
dGRlcnI9RmFsc2UpOgorICAgICAgICBzZWxmLnRlc3RfbmFtZSA9IHRlc3RfbmFtZQorICAgICAg
ICBzZWxmLmZhaWx1cmVzID0gZmFpbHVyZXMgb3IgW10KKyAgICAgICAgc2VsZi50ZXN0X3J1bl90
aW1lID0gdGVzdF9ydW5fdGltZSBvciAwCisgICAgICAgIHNlbGYuaGFzX3N0ZGVyciA9IGhhc19z
dGRlcnIKKyAgICAgICAgIyBGSVhNRTogU2V0dGluZyB0aGlzIGluIHRoZSBjb25zdHJ1Y3RvciBt
YWtlcyB0aGlzIGNsYXNzIGhhcmQgdG8gbXV0YXRlLgorICAgICAgICBzZWxmLnR5cGUgPSB0ZXN0
X2ZhaWx1cmVzLmRldGVybWluZV9yZXN1bHRfdHlwZShmYWlsdXJlcykKKworICAgIGRlZiBfX2Vx
X18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gKHNlbGYudGVzdF9uYW1lID09IG90aGVy
LnRlc3RfbmFtZSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWx1cmVzID09IG90aGVyLmZh
aWx1cmVzIGFuZAorICAgICAgICAgICAgICAgIHNlbGYudGVzdF9ydW5fdGltZSA9PSBvdGhlci50
ZXN0X3J1bl90aW1lKQorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJl
dHVybiBub3QgKHNlbGYgPT0gb3RoZXIpCisKKyAgICBkZWYgaGFzX2ZhaWx1cmVfbWF0Y2hpbmdf
dHlwZXMoc2VsZiwgKmFyZ3MsICoqa2FyZ3MpOgorICAgICAgICBmb3IgZmFpbHVyZSBpbiBzZWxm
LmZhaWx1cmVzOgorICAgICAgICAgICAgaWYgdHlwZShmYWlsdXJlKSBpbiBhcmdzOgorICAgICAg
ICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGR1
bXBzKHNlbGYpOgorICAgICAgICByZXR1cm4gY1BpY2tsZS5kdW1wcyhzZWxmKQpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcmVzdWx0cy5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMv
dGVzdF9yZXN1bHRzLnB5CShyZXZpc2lvbiAwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcmVzdWx0cy5weQkod29ya2luZyBjb3B5KQpAQCAtMjgs
NyArMjgsNyBAQAogCiBpbXBvcnQgY1BpY2tsZQogCi1pbXBvcnQgdGVzdF9mYWlsdXJlcworZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiAKIAog
Y2xhc3MgVGVzdFJlc3VsdChvYmplY3QpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcmVzdWx0c191bml0dGVzdC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9yZXN1bHRz
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA5MDUyMCkJKGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRzX3VuaXR0ZXN0LnB5Ojkw
NTIwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3Rf
cmVzdWx0c191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisjIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gdGVzdF9yZXN1bHRzIGltcG9y
dCBUZXN0UmVzdWx0CisKKworY2xhc3MgVGVzdFJlc3VsdHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKKyAgICBkZWYgdGVzdF9kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gVGVzdFJl
c3VsdCgiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQudGVzdF9uYW1lLCAn
Zm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuZmFpbHVyZXMsIFtdKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC50ZXN0X3J1bl90aW1lLCAwKQorCisgICAgZGVm
IHRlc3RfbG9hZHMoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IFRlc3RSZXN1bHQodGVzdF9uYW1l
PSdmb28nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVzPVtdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcnVuX3RpbWU9MS4xKQorICAgICAgICBzID0gcmVz
dWx0LmR1bXBzKCkKKyAgICAgICAgbmV3X3Jlc3VsdCA9IFRlc3RSZXN1bHQubG9hZHMocykKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobmV3X3Jlc3VsdCwgVGVzdFJlc3VsdCkp
CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfcmVzdWx0LCByZXN1bHQpCisKKyAgICAg
ICAgIyBBbHNvIGNoZWNrIHRoYXQgIT0gaXMgaW1wbGVtZW50ZWQuCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UobmV3X3Jlc3VsdCAhPSByZXN1bHQpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9yZXN1bHRzX3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3Jl
c3VsdHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9yZXN1bHRzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3RfcmVz
dWx0cyBpbXBvcnQgVGVzdFJlc3VsdAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxz
LnRlc3RfcmVzdWx0cyBpbXBvcnQgVGVzdFJlc3VsdAogCiAKIGNsYXNzIFRlc3RSZXN1bHRzVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkJKHJldmlzaW9uIDkwNTI4KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQkod29y
a2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQudGVz
dG91dHB1dHNldCBpCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2
ZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBhdGggaW1wb3J0IGN5Z3BhdGgKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS56aXBmaWxlc2V0IGltcG9ydCBaaXBGaWxlU2V0Ci1mcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9leHBlY3Rh
dGlvbnMKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBl
Y3RhdGlvbnMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuYmFzZSBpbXBvcnQgUG9y
dAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5kcml2ZXIgaW1wb3J0IERyaXZlciwg
RHJpdmVyT3V0cHV0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBidWls
ZGVycwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJp
bnRpbmcucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvdmlld3MvcHJpbnRpbmcucHkJKHJldmlzaW9uIDkwNTI4KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmcucHkJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDcgKzM1LDcgQEAgaW1wb3J0IHRpbWUKIAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0IGlt
cG9ydCByZXN1bHRzanNvbnBhcnNlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudmlld3Mu
bWV0ZXJlZF9zdHJlYW0gaW1wb3J0IE1ldGVyZWRTdHJlYW0KLWZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucworZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogCiAjIEZJ
WE1FOiBDaGFuZ2UgdGhpcyB0byBfX2ZpbGVfXyB3aGVuIHdlIGNhbiBmaXggdGVzdC13ZWJraXRw
eSdzIGxvZ2dpbmcgY29uZmlndXJhdGlvbi4KIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnByaW50ZXIiKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmdfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmdfdW5pdHRl
c3QucHkJKHJldmlzaW9uIDkwNTI4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvdmlld3MvcHJpbnRpbmdfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEw
ICszOCwxMCBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgYXJyYXlfc3RyZWFtCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3Rlc3RpbmcKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250
cm9sbGVycyBpbXBvcnQgbWFuYWdlcgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0
X3BhY2thZ2UgaW1wb3J0IHJlc3VsdF9zdW1tYXJ5Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKLWZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCi1mcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9yZXN1bHRzCitm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHJlc3VsdF9zdW1tYXJ5Citm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25z
Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMK
K2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9yZXN1bHRzCiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgcHJpbnRpbmcKIAogCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25z
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDkwNTI4KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9u
c191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsNiBAQAogIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIAotIiIiVW5pdCB0ZXN0cyBmb3IgdGVzdF9leHBlY3RhdGlv
bnMucHkuIiIiCi0KIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1f
d2Via2l0X3Rlc3RzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9f
YmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkJKHJldmlzaW9uIDkw
NTI4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJhc2VsaW5lX2No
cm9taXVtX3dlYmtpdF90ZXN0cy5weQkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltCiAKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBv
cnQgcmVhZF9jaGVja3N1bV9mcm9tX3BuZwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5
b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCitmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiAKIF9sb2cgPSBsb2dnaW5n
LmdldExvZ2dlcihfX25hbWVfXykKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDkwNTI4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1
ZXRhc2tfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAgZnJvbSB3
ZWJraXRweS5jb21tb24ubmV0LmxheW91dHRlc3RyZXN1bAogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxvZwogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCi1mcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9yZXN1bHRz
Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9m
YWlsdXJlcworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3Jl
c3VsdHMKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWls
dXJlcwogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gd2Vi
a2l0cHkudG9vbC5ib3QuY29tbWl0cXVldWV0YXNrIGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LnRv
b2wuYm90LmV4cGVjdGVkZmFpbHVyZXMgaW1wb3J0IEV4cGVjdGVkRmFpbHVyZXMKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXJfdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9mbGFreXRl
c3RyZXBvcnRlcl91bml0dGVzdC5weQkocmV2aXNpb24gOTA1MjgpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw4ICszMSw4IEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWJraXRweS5j
b21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlcgogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJl
Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9y
ZXN1bHRzCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQg
dGVzdF9mYWlsdXJlcworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0
ZXN0X3Jlc3VsdHMKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVz
dF9mYWlsdXJlcwogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIGZy
b20gd2Via2l0cHkudG9vbC5ib3QuZmxha3l0ZXN0cmVwb3J0ZXIgaW1wb3J0IEZsYWt5VGVzdFJl
cG9ydGVyCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sLCBNb2Nr
U3RhdHVzU2VydmVyCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cXVldWVzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDkwNTI4KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQCBpbXBvcnQgU3RyaW5nSU8KIGZyb20gd2Via2l0
cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQgQ2hlY2tvdXROZWVkc1VwZGF0ZQogZnJvbSB3
ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBBdHRhY2htZW50CiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQotZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0
cwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3Rf
ZmFpbHVyZXMKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9y
ZXN1bHRzCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZmFp
bHVyZXMKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHdl
YmtpdHB5LnRvb2wuY29tbWFuZHMuY29tbWFuZHRlc3QgaW1wb3J0IENvbW1hbmRzVGVzdAogZnJv
bSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnF1ZXVlcyBpbXBvcnQgKgpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkJKHJldmlz
aW9uIDkwNTI4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFz
ZWxpbmUucHkJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgaW1wb3J0IHVybGxpYgog
ZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1aWxkYm90IGltcG9ydCBCdWlsZEJvdAogZnJvbSB3
ZWJraXRweS5jb21tb24ubmV0LmxheW91dHRlc3RyZXN1bHRzIGltcG9ydCBMYXlvdXRUZXN0UmVz
dWx0cwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXIgaW1wb3J0IFVzZXIKLWZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2ZhaWx1cmVz
Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGZhY3RvcnkKIGZyb20gd2Vi
a2l0cHkudG9vbC5ncmFtbWFyIGltcG9ydCBwbHVyYWxpemUKIGZyb20gd2Via2l0cHkudG9vbC5t
dWx0aWNvbW1hbmR0b29sIGltcG9ydCBBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZAo=
</data>
<flag name="review"
          id="94516"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>