<?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>38122</bug_id>
          
          <creation_ts>2010-04-26 06:08:42 -0700</creation_ts>
          <short_desc>check-webkit-style: Rename the processors/ directory to checkers/</short_desc>
          <delta_ts>2010-04-26 14:03:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Chris Jerdonek">cjerdonek</assigned_to>
          <cc>cjerdonek</cc>
    
    <cc>hamaji</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>217052</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-26 06:08:42 -0700</bug_when>
    <thetext>This is to address a FIXME introduced in--

https://bugs.webkit.org/show_bug.cgi?id=37066</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217053</commentid>
    <comment_count>1</comment_count>
      <attachid>54286</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-26 06:18:43 -0700</bug_when>
    <thetext>Created attachment 54286
Proposed patch

The only changes that are not the directory move are updating the import statements in checker.py and checker_unittest.py and changing one word in a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217055</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-26 06:23:53 -0700</bug_when>
    <thetext>Attachment 54286 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
Traceback (most recent call last):
  File &quot;WebKitTools/Scripts/check-webkit-style&quot;, line 52, in &lt;module&gt;
    import webkitpy.style.checker as checker
  File &quot;/mnt/git/webkit-style-queue/WebKitTools/Scripts/webkitpy/style/checker.py&quot;, line 37, in &lt;module&gt;
    from checkers.common import categories as CommonCategories
ImportError: No module named checkers.common


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217076</commentid>
    <comment_count>3</comment_count>
      <attachid>54286</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-26 07:04:36 -0700</bug_when>
    <thetext>Comment on attachment 54286
Proposed patch

Looks like these files were just remoevd :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217125</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-26 08:43:22 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 54286 [details])
&gt; Looks like these files were just remoevd :)

This is a limitation of svn-create-patch.  See for example--

https://bugs.webkit.org/show_bug.cgi?id=35196#c4

Sorry, I thought you knew about this.  Otherwise I would have mentioned that in the comment.  (That&apos;s why I put cq-.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217133</commentid>
    <comment_count>5</comment_count>
      <attachid>54286</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-26 09:22:36 -0700</bug_when>
    <thetext>Comment on attachment 54286
Proposed patch

Ah, I didn&apos;t know that. Thanks for the info. Looks good, assuming you&apos;ll add these files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217260</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-26 14:03:04 -0700</bug_when>
    <thetext>Committed: http://trac.webkit.org/changeset/58263</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54286</attachid>
            <date>2010-04-26 06:18:43 -0700</date>
            <delta_ts>2010-04-26 09:22:36 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>_patch-38122-1.diff</filename>
            <type>text/plain</type>
            <size>327281</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU4MjUxKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDQtMjYgIENocmlzIEplcmRvbmVrICA8
Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRm9yIGNoZWNrLXdlYmtpdC1zdHlsZSwgcmVuYW1lZCB0aGUgc3R5bGUv
cHJvY2Vzc29ycy8gZGlyZWN0b3J5CisgICAgICAgIHRvIHN0eWxlL2NoZWNrZXJzLy4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgxMjIKKworICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weToKKyAgICAgICAgICAtIFVw
ZGF0ZWQgaW1wb3J0IHN0YXRlbWVudHMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJfdW5pdHRlc3QucHk6CisgICAgICAgICAgLSBVcGRhdGVkIGltcG9ydCBzdGF0
ZW1lbnRzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyczogQ29w
aWVkIGZyb20gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29yczogUmVtb3ZlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvX19pbml0X18ucHk6IFJl
bW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2NvbW1v
bi5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3Nv
cnMvY29tbW9uX3VuaXR0ZXN0LnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHAucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2NwcF91bml0dGVzdC5weTogUmVtb3ZlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvcHl0aG9uLnB5OiBSZW1vdmVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9weXRob25fdW5p
dHRlc3QucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9j
ZXNzb3JzL3B5dGhvbl91bml0dGVzdF9pbnB1dC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvdGV4dC5weTogUmVtb3ZlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvdGV4dF91bml0dGVzdC5weTogUmVt
b3ZlZC4KKwogMjAxMC0wNC0yNiAgQ2hyaXMgSmVyZG9uZWsgIDxjamVyZG9uZWtAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaGluaWNoaXJvIEhhbWFqaS4KSW5kZXg6IFdlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkJKHJldmlzaW9uIDU4
MjUxKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMTUgQEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBv
cy5wYXRoCiBpbXBvcnQgc3lzCiAKK2Zyb20gY2hlY2tlcnMuY29tbW9uIGltcG9ydCBjYXRlZ29y
aWVzIGFzIENvbW1vbkNhdGVnb3JpZXMKK2Zyb20gY2hlY2tlcnMuY29tbW9uIGltcG9ydCBDYXJy
aWFnZVJldHVyblByb2Nlc3NvcgorZnJvbSBjaGVja2Vycy5jcHAgaW1wb3J0IENwcFByb2Nlc3Nv
cgorZnJvbSBjaGVja2Vycy5weXRob24gaW1wb3J0IFB5dGhvblByb2Nlc3NvcgorZnJvbSBjaGVj
a2Vycy50ZXh0IGltcG9ydCBUZXh0UHJvY2Vzc29yCiBmcm9tIGVycm9yX2hhbmRsZXJzIGltcG9y
dCBEZWZhdWx0U3R5bGVFcnJvckhhbmRsZXIKIGZyb20gZmlsdGVyIGltcG9ydCBGaWx0ZXJDb25m
aWd1cmF0aW9uCiBmcm9tIG9wdHBhcnNlciBpbXBvcnQgQXJndW1lbnRQYXJzZXIKIGZyb20gb3B0
cGFyc2VyIGltcG9ydCBEZWZhdWx0Q29tbWFuZE9wdGlvblZhbHVlcwotZnJvbSBwcm9jZXNzb3Jz
LmNvbW1vbiBpbXBvcnQgY2F0ZWdvcmllcyBhcyBDb21tb25DYXRlZ29yaWVzCi1mcm9tIHByb2Nl
c3NvcnMuY29tbW9uIGltcG9ydCBDYXJyaWFnZVJldHVyblByb2Nlc3NvcgotZnJvbSBwcm9jZXNz
b3JzLmNwcCBpbXBvcnQgQ3BwUHJvY2Vzc29yCi1mcm9tIHByb2Nlc3NvcnMucHl0aG9uIGltcG9y
dCBQeXRob25Qcm9jZXNzb3IKLWZyb20gcHJvY2Vzc29ycy50ZXh0IGltcG9ydCBUZXh0UHJvY2Vz
c29yCiBmcm9tIHdlYmtpdHB5LnN0eWxlX3JlZmVyZW5jZXMgaW1wb3J0IHBhcnNlX3BhdGNoCiBm
cm9tIHdlYmtpdHB5LnN0eWxlX3JlZmVyZW5jZXMgaW1wb3J0IGNvbmZpZ3VyZV9sb2dnaW5nIGFz
IF9jb25maWd1cmVfbG9nZ2luZwogCkBAIC0xOTEsNyArMTkxLDcgQEAgX01BWF9SRVBPUlRTX1BF
Ul9DQVRFR09SWSA9IHsKIAogZGVmIF9hbGxfY2F0ZWdvcmllcygpOgogICAgICIiIlJldHVybiB0
aGUgc2V0IG9mIGFsbCBjYXRlZ29yaWVzIHVzZWQgYnkgY2hlY2std2Via2l0LXN0eWxlLiIiIgot
ICAgICMgVGFrZSB0aGUgdW5pb24gYWNyb3NzIGFsbCBwcm9jZXNzb3JzLgorICAgICMgVGFrZSB0
aGUgdW5pb24gYWNyb3NzIGFsbCBjaGVja2Vycy4KICAgICBjYXRlZ29yaWVzID0gQ29tbW9uQ2F0
ZWdvcmllcy51bmlvbihDcHBQcm9jZXNzb3IuY2F0ZWdvcmllcykKIAogICAgICMgRklYTUU6IENv
bnNpZGVyIGFkZGluZyBhbGwgb2YgdGhlIHBlcDggY2F0ZWdvcmllcy4gIFNpbmNlIHRoZXkKSW5k
ZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDU4MjUxKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC01NCwx
NCArNTQsMTQgQEAgZnJvbSBjaGVja2VyIGltcG9ydCBQYXRjaENoZWNrZXIKIGZyb20gY2hlY2tl
ciBpbXBvcnQgUHJvY2Vzc29yQmFzZQogZnJvbSBjaGVja2VyIGltcG9ydCBTdHlsZVByb2Nlc3Nv
cgogZnJvbSBjaGVja2VyIGltcG9ydCBTdHlsZUNoZWNrZXJDb25maWd1cmF0aW9uCitmcm9tIGNo
ZWNrZXJzLmNwcCBpbXBvcnQgQ3BwUHJvY2Vzc29yCitmcm9tIGNoZWNrZXJzLnB5dGhvbiBpbXBv
cnQgUHl0aG9uUHJvY2Vzc29yCitmcm9tIGNoZWNrZXJzLnRleHQgaW1wb3J0IFRleHRQcm9jZXNz
b3IKIGZyb20gZXJyb3JfaGFuZGxlcnMgaW1wb3J0IERlZmF1bHRTdHlsZUVycm9ySGFuZGxlcgog
ZnJvbSBmaWx0ZXIgaW1wb3J0IHZhbGlkYXRlX2ZpbHRlcl9ydWxlcwogZnJvbSBmaWx0ZXIgaW1w
b3J0IEZpbHRlckNvbmZpZ3VyYXRpb24KIGZyb20gb3B0cGFyc2VyIGltcG9ydCBBcmd1bWVudFBh
cnNlcgogZnJvbSBvcHRwYXJzZXIgaW1wb3J0IENvbW1hbmRPcHRpb25WYWx1ZXMKLWZyb20gcHJv
Y2Vzc29ycy5jcHAgaW1wb3J0IENwcFByb2Nlc3NvcgotZnJvbSBwcm9jZXNzb3JzLnB5dGhvbiBp
bXBvcnQgUHl0aG9uUHJvY2Vzc29yCi1mcm9tIHByb2Nlc3NvcnMudGV4dCBpbXBvcnQgVGV4dFBy
b2Nlc3NvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmxvZ3Rlc3RpbmcgaW1wb3J0IExv
Z2dpbmdUZXN0Q2FzZQogZnJvbSB3ZWJraXRweS5zdHlsZS5maWxlcmVhZGVyIGltcG9ydCBUZXh0
RmlsZVJlYWRlcgogCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3By
b2Nlc3NvcnMvX19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL19faW5pdF9fLnB5CShyZXZpc2lvbiA1ODI1MSkKKysr
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9fX2luaXRfXy5w
eQkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jIFJlcXVpcmVkIGZvciBQeXRob24gdG8g
c2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGUgZmlsZXMKSW5kZXg6IFdlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9jb21tb24ucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2NvbW1vbi5w
eQkocmV2aXNpb24gNTgyNTEpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L3Byb2Nlc3NvcnMvY29tbW9uLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDU3ICswLDAgQEAKLSMg
Q29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykK
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotIyBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotIyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiU3VwcG9ydHMg
c3R5bGUgY2hlY2tpbmcgbm90IHNwZWNpZmljIHRvIGFueSBvbmUgZmlsZSB0eXBlLiIiIgotCi0K
LSMgRklYTUU6IFRlc3QgdGhpcyBsaXN0IGluIHRoZSBzYW1lIHdheSB0aGF0IHRoZSBsaXN0IG9m
IENwcFByb2Nlc3NvcgotIyAgICAgICAgY2F0ZWdvcmllcyBpcyB0ZXN0ZWQsIGZvciBleGFtcGxl
IGJ5IGNoZWNraW5nIHRoYXQgYWxsIG9mIGl0cwotIyAgICAgICAgZWxlbWVudHMgYXBwZWFyIGlu
IHRoZSB1bml0IHRlc3RzLiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBkb25lCi0jICAgICAgICBh
ZnRlciBtb3ZpbmcgdGhlIHJlbGV2YW50IGNwcF91bml0dGVzdC5FcnJvckNvbGxlY3RvciBjb2Rl
Ci0jICAgICAgICBpbnRvIGEgc2hhcmVkIGxvY2F0aW9uIGFuZCByZWZhY3RvcmluZyBhcHByb3By
aWF0ZWx5LgotY2F0ZWdvcmllcyA9IHNldChbCi0gICAgIndoaXRlc3BhY2UvY2FycmlhZ2VfcmV0
dXJuIiwKLV0pCi0KLQotY2xhc3MgQ2FycmlhZ2VSZXR1cm5Qcm9jZXNzb3Iob2JqZWN0KToKLQot
ICAgICIiIlN1cHBvcnRzIGNoZWNraW5nIGZvciBhbmQgaGFuZGxpbmcgY2FycmlhZ2UgcmV0dXJu
cy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYW5kbGVfc3R5bGVfZXJyb3IpOgotICAg
ICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IgPSBoYW5kbGVfc3R5bGVfZXJyb3IKLQotICAg
IGRlZiBwcm9jZXNzKHNlbGYsIGxpbmVzKToKLSAgICAgICAgIiIiQ2hlY2sgZm9yIGFuZCBzdHJp
cCB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm5zIGZyb20gbGluZXMuIiIiCi0gICAgICAgIGZvciBs
aW5lX251bWJlciBpbiByYW5nZShsZW4obGluZXMpKToKLSAgICAgICAgICAgIGlmIG5vdCBsaW5l
c1tsaW5lX251bWJlcl0uZW5kc3dpdGgoIlxyIik6Ci0gICAgICAgICAgICAgICAgY29udGludWUK
LQotICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVtYmVyICsgMSwg
ICMgQ29ycmVjdCBmb3Igb2Zmc2V0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ3aGl0ZXNwYWNlL2NhcnJpYWdlX3JldHVybiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
T25lIG9yIG1vcmUgdW5leHBlY3RlZCBcXHIgKF5NKSBmb3VuZDsgIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJiZXR0ZXIgdG8gdXNlIG9ubHkgYSBcXG4iKQotCi0gICAg
ICAgICAgICBsaW5lc1tsaW5lX251bWJlcl0gPSBsaW5lc1tsaW5lX251bWJlcl0ucnN0cmlwKCJc
ciIpCi0KLSAgICAgICAgcmV0dXJuIGxpbmVzCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY29tbW9uX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9jb21tb25fdW5p
dHRlc3QucHkJKHJldmlzaW9uIDU4MjUxKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9wcm9jZXNzb3JzL2NvbW1vbl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAt
MSw5NCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBDaHJpcyBKZXJkb25layAoY2plcmRv
bmVrQHdlYmtpdC5vcmcpCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoK
LSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0jIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KLSMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLSIiIlVuaXQgdGVzdHMgZm9yIGNvbW1vbi5weS4iIiIKLQotaW1wb3J0IHVuaXR0ZXN0Ci0K
LWZyb20gY29tbW9uIGltcG9ydCBDYXJyaWFnZVJldHVyblByb2Nlc3NvcgotCi0KLSMgRklYTUU6
IFRoZSB1bml0IHRlc3RzIGZvciB0aGUgY3BwLCB0ZXh0LCBhbmQgY29tbW9uIHByb2Nlc3NvcnMg
c2hvdWxkCi0jICAgICAgICBzaGFyZSBzdXBwb3J0aW5nIHRlc3QgY29kZS4gVGhpcyBjYW4gaW5j
bHVkZSwgZm9yIGV4YW1wbGUsIHRoZQotIyAgICAgICAgbW9jayBzdHlsZSBlcnJvciBoYW5kbGlu
ZyBjb2RlIGFuZCB0aGUgY29kZSB0byBjaGVjayB0aGF0IGFsbAotIyAgICAgICAgb2YgYSBwcm9j
ZXNzb3IncyBjYXRlZ29yaWVzIGFyZSBjb3ZlcmVkIGJ5IHRoZSB1bml0IHRlc3RzLgotIyAgICAg
ICAgU3VjaCBzaGFyZWQgY29kZSBjYW4gYmUgbG9jYXRlZCBpbiBhIHNoYXJlZCB0ZXN0IGZpbGUs
IHBlcmhhcHMKLSMgICAgICAgIGV2ZW4gdGhpcyBmaWxlLgotY2xhc3MgQ2FycmlhZ2VSZXR1cm5Q
cm9jZXNzb3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3RzIGNoZWNrX25v
X2NhcnJpYWdlX3JldHVybigpLiIiIgotCi0gICAgX2NhdGVnb3J5ID0gIndoaXRlc3BhY2UvY2Fy
cmlhZ2VfcmV0dXJuIgotICAgIF9jb25maWRlbmNlID0gMQotICAgIF9leHBlY3RlZF9tZXNzYWdl
ID0gKCJPbmUgb3IgbW9yZSB1bmV4cGVjdGVkIFxcciAoXk0pIGZvdW5kOyAiCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgImJldHRlciB0byB1c2Ugb25seSBhIFxcbiIpCi0KLSAgICBkZWYgc2V0
VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuX3N0eWxlX2Vycm9ycyA9IFtdICMgVGhlIGxpc3Qgb2Yg
YWNjdW11bGF0ZWQgc3R5bGUgZXJyb3JzLgotCi0gICAgZGVmIF9tb2NrX3N0eWxlX2Vycm9yX2hh
bmRsZXIoc2VsZiwgbGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UpOgotICAgICAgICAiIiJBcHBlbmQgdGhl
IGVycm9yIGluZm9ybWF0aW9uIHRvIHRoZSBsaXN0IG9mIHN0eWxlIGVycm9ycy4iIiIKLSAgICAg
ICAgZXJyb3IgPSAobGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKQot
ICAgICAgICBzZWxmLl9zdHlsZV9lcnJvcnMuYXBwZW5kKGVycm9yKQotCi0gICAgZGVmIGFzc2Vy
dF9jYXJyaWFnZV9yZXR1cm4oc2VsZiwgaW5wdXRfbGluZXMsIGV4cGVjdGVkX2xpbmVzLCBlcnJv
cl9saW5lcyk6Ci0gICAgICAgICIiIlByb2Nlc3MgdGhlIGdpdmVuIGxpbmUgYW5kIGFzc2VydCB0
aGF0IHRoZSByZXN1bHQgaXMgY29ycmVjdC4iIiIKLSAgICAgICAgaGFuZGxlX3N0eWxlX2Vycm9y
ID0gc2VsZi5fbW9ja19zdHlsZV9lcnJvcl9oYW5kbGVyCi0KLSAgICAgICAgcHJvY2Vzc29yID0g
Q2FycmlhZ2VSZXR1cm5Qcm9jZXNzb3IoaGFuZGxlX3N0eWxlX2Vycm9yKQotICAgICAgICBvdXRw
dXRfbGluZXMgPSBwcm9jZXNzb3IucHJvY2VzcyhpbnB1dF9saW5lcykKLQotICAgICAgICAjIENo
ZWNrIGJvdGggdGhlIHJldHVybiB2YWx1ZSBhbmQgZXJyb3IgbWVzc2FnZXMuCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKG91dHB1dF9saW5lcywgZXhwZWN0ZWRfbGluZXMpCi0KLSAgICAgICAg
ZXhwZWN0ZWRfZXJyb3JzID0gWyhsaW5lX251bWJlciwgc2VsZi5fY2F0ZWdvcnksIHNlbGYuX2Nv
bmZpZGVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwZWN0ZWRfbWVz
c2FnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lX251bWJlciBpbiBlcnJv
cl9saW5lc10KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5fc3R5bGVfZXJyb3JzLCBl
eHBlY3RlZF9lcnJvcnMpCi0KLSAgICBkZWYgdGVzdF9lbmRzX3dpdGhfY2FycmlhZ2Uoc2VsZik6
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2NhcnJpYWdlX3JldHVybihbImNhcnJpYWdlIHJldHVyblxy
Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImNhcnJpYWdlIHJldHVy
biJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzFdKQotCi0gICAgZGVm
IHRlc3RfZW5kc193aXRoX25vdGhpbmcoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2NhcnJp
YWdlX3JldHVybihbIm5vIGNhcnJpYWdlIHJldHVybiJdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyJubyBjYXJyaWFnZSByZXR1cm4iXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtdKQotCi0gICAgZGVmIHRlc3RfZW5kc193aXRoX25ld2xpbmUo
c2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2NhcnJpYWdlX3JldHVybihbIm5vIGNhcnJpYWdl
IHJldHVyblxuIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm5vIGNh
cnJpYWdlIHJldHVyblxuIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
XSkKLQotICAgIGRlZiB0ZXN0X2NhcnJpYWdlX2luX21pZGRsZShzZWxmKToKLSAgICAgICAgIyBU
aGUgQ2FycmlhZ2VSZXR1cm5Qcm9jZXNzb3IgY2hlY2tzIG9ubHkgdGhlIGZpbmFsIGNoYXJhY3Rl
cgotICAgICAgICAjIG9mIGVhY2ggbGluZS4KLSAgICAgICAgc2VsZi5hc3NlcnRfY2FycmlhZ2Vf
cmV0dXJuKFsiY2FycmlhZ2VcciBpbiBhIHN0cmluZyJdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyJjYXJyaWFnZVxyIGluIGEgc3RyaW5nIl0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbXSkKLQotICAgIGRlZiB0ZXN0X211bHRpcGxlX2Vycm9y
cyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfY2FycmlhZ2VfcmV0dXJuKFsibGluZTEiLCAi
bGluZTJcciIsICJsaW5lM1xyIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbImxpbmUxIiwgImxpbmUyIiwgImxpbmUzIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbMiwgM10pCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL3Byb2Nlc3NvcnMvY3BwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHAucHkJKHJldmlzaW9uIDU4MjUxKQorKysgV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2NwcC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMSwyOTk0ICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0jIC0qLSBjb2Rp
bmc6IHV0Zi04IC0qLQotIwotIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCi0j
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENv
cHlyaWdodCAoQykgMjAxMCBDaHJpcyBKZXJkb25layAoY2plcmRvbmVrQHdlYmtpdC5vcmcpCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0jIFRoaXMgaXMgdGhlIG1vZGlmaWVkIHZlcnNpb24gb2YgR29vZ2xl
J3MgY3BwbGludC4gVGhlIG9yaWdpbmFsIGNvZGUgaXMKLSMgaHR0cDovL2dvb2dsZS1zdHlsZWd1
aWRlLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9jcHBsaW50L2NwcGxpbnQucHkKLQotIiIiU3Vw
cG9ydCBmb3IgY2hlY2std2Via2l0LXN0eWxlLiIiIgotCi1pbXBvcnQgY29kZWNzCi1pbXBvcnQg
bWF0aCAgIyBmb3IgbG9nCi1pbXBvcnQgb3MKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgcmUKLWlt
cG9ydCBzcmVfY29tcGlsZQotaW1wb3J0IHN0cmluZwotaW1wb3J0IHN5cwotaW1wb3J0IHVuaWNv
ZGVkYXRhCi0KLQotIyBIZWFkZXJzIHRoYXQgd2UgY29uc2lkZXIgU1RMIGhlYWRlcnMuCi1fU1RM
X0hFQURFUlMgPSBmcm96ZW5zZXQoWwotICAgICdhbGdvYmFzZS5oJywgJ2FsZ29yaXRobScsICdh
bGxvYy5oJywgJ2JpdHNldCcsICdkZXF1ZScsICdleGNlcHRpb24nLAotICAgICdmdW5jdGlvbi5o
JywgJ2Z1bmN0aW9uYWwnLCAnaGFzaF9tYXAnLCAnaGFzaF9tYXAuaCcsICdoYXNoX3NldCcsCi0g
ICAgJ2hhc2hfc2V0LmgnLCAnaXRlcmF0b3InLCAnbGlzdCcsICdsaXN0LmgnLCAnbWFwJywgJ21l
bW9yeScsICdwYWlyLmgnLAotICAgICdwdGhyZWFkX2FsbG9jJywgJ3F1ZXVlJywgJ3NldCcsICdz
ZXQuaCcsICdzc3RyZWFtJywgJ3N0YWNrJywKLSAgICAnc3RsX2FsbG9jLmgnLCAnc3RsX3JlbG9w
cy5oJywgJ3R5cGVfdHJhaXRzLmgnLAotICAgICd1dGlsaXR5JywgJ3ZlY3RvcicsICd2ZWN0b3Iu
aCcsCi0gICAgXSkKLQotCi0jIE5vbi1TVEwgQysrIHN5c3RlbSBoZWFkZXJzLgotX0NQUF9IRUFE
RVJTID0gZnJvemVuc2V0KFsKLSAgICAnYWxnby5oJywgJ2J1aWx0aW5idWYuaCcsICdidmVjdG9y
LmgnLCAnY2Fzc2VydCcsICdjY3R5cGUnLAotICAgICdjZXJybm8nLCAnY2Zsb2F0JywgJ2Npc282
NDYnLCAnY2xpbWl0cycsICdjbG9jYWxlJywgJ2NtYXRoJywKLSAgICAnY29tcGxleCcsICdjb21w
bGV4LmgnLCAnY3NldGptcCcsICdjc2lnbmFsJywgJ2NzdGRhcmcnLCAnY3N0ZGRlZicsCi0gICAg
J2NzdGRpbycsICdjc3RkbGliJywgJ2NzdHJpbmcnLCAnY3RpbWUnLCAnY3djaGFyJywgJ2N3Y3R5
cGUnLAotICAgICdkZWZhbGxvYy5oJywgJ2RlcXVlLmgnLCAnZWRpdGJ1Zi5oJywgJ2V4Y2VwdGlv
bicsICdmc3RyZWFtJywKLSAgICAnZnN0cmVhbS5oJywgJ2hhc2h0YWJsZS5oJywgJ2hlYXAuaCcs
ICdpbmRzdHJlYW0uaCcsICdpb21hbmlwJywKLSAgICAnaW9tYW5pcC5oJywgJ2lvcycsICdpb3Nm
d2QnLCAnaW9zdHJlYW0nLCAnaW9zdHJlYW0uaCcsICdpc3RyZWFtLmgnLAotICAgICdpdGVyYXRv
ci5oJywgJ2xpbWl0cycsICdtYXAuaCcsICdtdWx0aW1hcC5oJywgJ211bHRpc2V0LmgnLAotICAg
ICdudW1lcmljJywgJ29zdHJlYW0uaCcsICdwYXJzZXN0cmVhbS5oJywgJ3Bmc3RyZWFtLmgnLCAn
UGxvdEZpbGUuaCcsCi0gICAgJ3Byb2NidWYuaCcsICdwdGhyZWFkX2FsbG9jLmgnLCAncm9wZScs
ICdyb3BlLmgnLCAncm9wZWltcGwuaCcsCi0gICAgJ1NGaWxlLmgnLCAnc2xpc3QnLCAnc2xpc3Qu
aCcsICdzdGFjay5oJywgJ3N0ZGV4Y2VwdCcsCi0gICAgJ3N0ZGlvc3RyZWFtLmgnLCAnc3RyZWFt
YnVmLmgnLCAnc3RyZWFtLmgnLCAnc3RyZmlsZS5oJywgJ3N0cmluZycsCi0gICAgJ3N0cnN0cmVh
bScsICdzdHJzdHJlYW0uaCcsICd0ZW1wYnVmLmgnLCAndHJlZS5oJywgJ3R5cGVpbmZvJywgJ3Zh
bGFycmF5JywKLSAgICBdKQotCi0KLSMgQXNzZXJ0aW9uIG1hY3Jvcy4gIFRoZXNlIGFyZSBkZWZp
bmVkIGluIGJhc2UvbG9nZ2luZy5oIGFuZAotIyB0ZXN0aW5nL2Jhc2UvZ3VuaXQuaC4gIE5vdGUg
dGhhdCB0aGUgX00gdmVyc2lvbnMgbmVlZCB0byBjb21lIGZpcnN0Ci0jIGZvciBzdWJzdHJpbmcg
bWF0Y2hpbmcgdG8gd29yay4KLV9DSEVDS19NQUNST1MgPSBbCi0gICAgJ0RDSEVDSycsICdDSEVD
SycsCi0gICAgJ0VYUEVDVF9UUlVFX00nLCAnRVhQRUNUX1RSVUUnLAotICAgICdBU1NFUlRfVFJV
RV9NJywgJ0FTU0VSVF9UUlVFJywKLSAgICAnRVhQRUNUX0ZBTFNFX00nLCAnRVhQRUNUX0ZBTFNF
JywKLSAgICAnQVNTRVJUX0ZBTFNFX00nLCAnQVNTRVJUX0ZBTFNFJywKLSAgICBdCi0KLSMgUmVw
bGFjZW1lbnQgbWFjcm9zIGZvciBDSEVDSy9EQ0hFQ0svRVhQRUNUX1RSVUUvRVhQRUNUX0ZBTFNF
Ci1fQ0hFQ0tfUkVQTEFDRU1FTlQgPSBkaWN0KFsobSwge30pIGZvciBtIGluIF9DSEVDS19NQUNS
T1NdKQotCi1mb3Igb3AsIHJlcGxhY2VtZW50IGluIFsoJz09JywgJ0VRJyksICgnIT0nLCAnTkUn
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICgnPj0nLCAnR0UnKSwgKCc+JywgJ0dUJyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAoJzw9JywgJ0xFJyksICgnPCcsICdMVCcpXToKLSAgICBf
Q0hFQ0tfUkVQTEFDRU1FTlRbJ0RDSEVDSyddW29wXSA9ICdEQ0hFQ0tfJXMnICUgcmVwbGFjZW1l
bnQKLSAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0NIRUNLJ11bb3BdID0gJ0NIRUNLXyVzJyAlIHJl
cGxhY2VtZW50Ci0gICAgX0NIRUNLX1JFUExBQ0VNRU5UWydFWFBFQ1RfVFJVRSddW29wXSA9ICdF
WFBFQ1RfJXMnICUgcmVwbGFjZW1lbnQKLSAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0FTU0VSVF9U
UlVFJ11bb3BdID0gJ0FTU0VSVF8lcycgJSByZXBsYWNlbWVudAotICAgIF9DSEVDS19SRVBMQUNF
TUVOVFsnRVhQRUNUX1RSVUVfTSddW29wXSA9ICdFWFBFQ1RfJXNfTScgJSByZXBsYWNlbWVudAot
ICAgIF9DSEVDS19SRVBMQUNFTUVOVFsnQVNTRVJUX1RSVUVfTSddW29wXSA9ICdBU1NFUlRfJXNf
TScgJSByZXBsYWNlbWVudAotCi1mb3Igb3AsIGludl9yZXBsYWNlbWVudCBpbiBbKCc9PScsICdO
RScpLCAoJyE9JywgJ0VRJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc+PScsICdM
VCcpLCAoJz4nLCAnTEUnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJzw9JywgJ0dU
JyksICgnPCcsICdHRScpXToKLSAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0VYUEVDVF9GQUxTRSdd
W29wXSA9ICdFWFBFQ1RfJXMnICUgaW52X3JlcGxhY2VtZW50Ci0gICAgX0NIRUNLX1JFUExBQ0VN
RU5UWydBU1NFUlRfRkFMU0UnXVtvcF0gPSAnQVNTRVJUXyVzJyAlIGludl9yZXBsYWNlbWVudAot
ICAgIF9DSEVDS19SRVBMQUNFTUVOVFsnRVhQRUNUX0ZBTFNFX00nXVtvcF0gPSAnRVhQRUNUXyVz
X00nICUgaW52X3JlcGxhY2VtZW50Ci0gICAgX0NIRUNLX1JFUExBQ0VNRU5UWydBU1NFUlRfRkFM
U0VfTSddW29wXSA9ICdBU1NFUlRfJXNfTScgJSBpbnZfcmVwbGFjZW1lbnQKLQotCi0jIFRoZXNl
IGNvbnN0YW50cyBkZWZpbmUgdHlwZXMgb2YgaGVhZGVycyBmb3IgdXNlIHdpdGgKLSMgX0luY2x1
ZGVTdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoKS4KLV9DT05GSUdfSEVBREVSID0gMAot
X1BSSU1BUllfSEVBREVSID0gMQotX09USEVSX0hFQURFUiA9IDIKLV9NT0NfSEVBREVSID0gMwot
Ci0KLSMgVGhlIHJlZ2V4cCBjb21waWxhdGlvbiBjYWNoaW5nIGlzIGlubGluZWQgaW4gYWxsIHJl
Z2V4cCBmdW5jdGlvbnMgZm9yCi0jIHBlcmZvcm1hbmNlIHJlYXNvbnM7IGZhY3RvcmluZyBpdCBv
dXQgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uIHR1cm5zIG91dAotIyB0byBiZSBub3RpY2VhYmx5
IGV4cGVuc2l2ZS4KLV9yZWdleHBfY29tcGlsZV9jYWNoZSA9IHt9Ci0KLQotZGVmIG1hdGNoKHBh
dHRlcm4sIHMpOgotICAgICIiIk1hdGNoZXMgdGhlIHN0cmluZyB3aXRoIHRoZSBwYXR0ZXJuLCBj
YWNoaW5nIHRoZSBjb21waWxlZCByZWdleHAuIiIiCi0gICAgaWYgbm90IHBhdHRlcm4gaW4gX3Jl
Z2V4cF9jb21waWxlX2NhY2hlOgotICAgICAgICBfcmVnZXhwX2NvbXBpbGVfY2FjaGVbcGF0dGVy
bl0gPSBzcmVfY29tcGlsZS5jb21waWxlKHBhdHRlcm4pCi0gICAgcmV0dXJuIF9yZWdleHBfY29t
cGlsZV9jYWNoZVtwYXR0ZXJuXS5tYXRjaChzKQotCi0KLWRlZiBzZWFyY2gocGF0dGVybiwgcyk6
Ci0gICAgIiIiU2VhcmNoZXMgdGhlIHN0cmluZyBmb3IgdGhlIHBhdHRlcm4sIGNhY2hpbmcgdGhl
IGNvbXBpbGVkIHJlZ2V4cC4iIiIKLSAgICBpZiBub3QgcGF0dGVybiBpbiBfcmVnZXhwX2NvbXBp
bGVfY2FjaGU6Ci0gICAgICAgIF9yZWdleHBfY29tcGlsZV9jYWNoZVtwYXR0ZXJuXSA9IHNyZV9j
b21waWxlLmNvbXBpbGUocGF0dGVybikKLSAgICByZXR1cm4gX3JlZ2V4cF9jb21waWxlX2NhY2hl
W3BhdHRlcm5dLnNlYXJjaChzKQotCi0KLWRlZiBzdWIocGF0dGVybiwgcmVwbGFjZW1lbnQsIHMp
OgotICAgICIiIlN1YnN0aXR1dGVzIG9jY3VycmVuY2VzIG9mIGEgcGF0dGVybiwgY2FjaGluZyB0
aGUgY29tcGlsZWQgcmVnZXhwLiIiIgotICAgIGlmIG5vdCBwYXR0ZXJuIGluIF9yZWdleHBfY29t
cGlsZV9jYWNoZToKLSAgICAgICAgX3JlZ2V4cF9jb21waWxlX2NhY2hlW3BhdHRlcm5dID0gc3Jl
X2NvbXBpbGUuY29tcGlsZShwYXR0ZXJuKQotICAgIHJldHVybiBfcmVnZXhwX2NvbXBpbGVfY2Fj
aGVbcGF0dGVybl0uc3ViKHJlcGxhY2VtZW50LCBzKQotCi0KLWRlZiBzdWJuKHBhdHRlcm4sIHJl
cGxhY2VtZW50LCBzKToKLSAgICAiIiJTdWJzdGl0dXRlcyBvY2N1cnJlbmNlcyBvZiBhIHBhdHRl
cm4sIGNhY2hpbmcgdGhlIGNvbXBpbGVkIHJlZ2V4cC4iIiIKLSAgICBpZiBub3QgcGF0dGVybiBp
biBfcmVnZXhwX2NvbXBpbGVfY2FjaGU6Ci0gICAgICAgIF9yZWdleHBfY29tcGlsZV9jYWNoZVtw
YXR0ZXJuXSA9IHNyZV9jb21waWxlLmNvbXBpbGUocGF0dGVybikKLSAgICByZXR1cm4gX3JlZ2V4
cF9jb21waWxlX2NhY2hlW3BhdHRlcm5dLnN1Ym4ocmVwbGFjZW1lbnQsIHMpCi0KLQotZGVmIHVw
X3RvX3VubWF0Y2hlZF9jbG9zaW5nX3BhcmVuKHMpOgotICAgICIiIlNwbGl0cyBhIHN0cmluZyBp
bnRvIHR3byBwYXJ0cyB1cCB0byBmaXJzdCB1bm1hdGNoZWQgJyknLgotCi0gICAgQXJnczoKLSAg
ICAgIHM6IGEgc3RyaW5nIHdoaWNoIGlzIGEgc3Vic3RyaW5nIG9mIGxpbmUgYWZ0ZXIgJygnCi0g
ICAgICAoZS5nLiwgImEgPT0gKGIgKyBjKSkiKS4KLQotICAgIFJldHVybnM6Ci0gICAgICBBIHBh
aXIgb2Ygc3RyaW5ncyAocHJlZml4IGJlZm9yZSBmaXJzdCB1bm1hdGNoZWQgJyknLAotICAgICAg
cmVtaW5kZXIgb2YgcyBhZnRlciBmaXJzdCB1bm1hdGNoZWQgJyknKSwgZS5nLiwKLSAgICAgIHVw
X3RvX3VubWF0Y2hlZF9jbG9zaW5nX3BhcmVuKCJhID09IChiICsgYykpIHsgIikKLSAgICAgIHJl
dHVybnMgImEgPT0gKGIgKyBjKSIsICIgeyIuCi0gICAgICBSZXR1cm5zIE5vbmUsIE5vbmUgaWYg
dGhlcmUgaXMgbm8gdW5tYXRjaGVkICcpJwotCi0gICAgIiIiCi0gICAgaSA9IDEKLSAgICBmb3Ig
cG9zLCBjIGluIGVudW1lcmF0ZShzKToKLSAgICAgIGlmIGMgPT0gJygnOgotICAgICAgICBpICs9
IDEKLSAgICAgIGVsaWYgYyA9PSAnKSc6Ci0gICAgICAgIGkgLT0gMQotICAgICAgICBpZiBpID09
IDA6Ci0gICAgICAgICAgcmV0dXJuIHNbOnBvc10sIHNbcG9zICsgMTpdCi0gICAgcmV0dXJuIE5v
bmUsIE5vbmUKLQotY2xhc3MgX0luY2x1ZGVTdGF0ZShkaWN0KToKLSAgICAiIiJUcmFja3MgbGlu
ZSBudW1iZXJzIGZvciBpbmNsdWRlcywgYW5kIHRoZSBvcmRlciBpbiB3aGljaCBpbmNsdWRlcyBh
cHBlYXIuCi0KLSAgICBBcyBhIGRpY3QsIGFuIF9JbmNsdWRlU3RhdGUgb2JqZWN0IHNlcnZlcyBh
cyBhIG1hcHBpbmcgYmV0d2VlbiBpbmNsdWRlCi0gICAgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVy
IG9uIHdoaWNoIHRoYXQgZmlsZSB3YXMgaW5jbHVkZWQuCi0KLSAgICBDYWxsIGNoZWNrX25leHRf
aW5jbHVkZV9vcmRlcigpIG9uY2UgZm9yIGVhY2ggaGVhZGVyIGluIHRoZSBmaWxlLCBwYXNzaW5n
Ci0gICAgaW4gdGhlIHR5cGUgY29uc3RhbnRzIGRlZmluZWQgYWJvdmUuIENhbGxzIGluIGFuIGls
bGVnYWwgb3JkZXIgd2lsbAotICAgIHJhaXNlIGFuIF9JbmNsdWRlRXJyb3Igd2l0aCBhbiBhcHBy
b3ByaWF0ZSBlcnJvciBtZXNzYWdlLgotCi0gICAgIiIiCi0gICAgIyBzZWxmLl9zZWN0aW9uIHdp
bGwgbW92ZSBtb25vdG9uaWNhbGx5IHRocm91Z2ggdGhpcyBzZXQuIElmIGl0IGV2ZXIKLSAgICAj
IG5lZWRzIHRvIG1vdmUgYmFja3dhcmRzLCBjaGVja19uZXh0X2luY2x1ZGVfb3JkZXIgd2lsbCBy
YWlzZSBhbiBlcnJvci4KLSAgICBfSU5JVElBTF9TRUNUSU9OID0gMAotICAgIF9DT05GSUdfU0VD
VElPTiA9IDEKLSAgICBfUFJJTUFSWV9TRUNUSU9OID0gMgotICAgIF9PVEhFUl9TRUNUSU9OID0g
MwotCi0gICAgX1RZUEVfTkFNRVMgPSB7Ci0gICAgICAgIF9DT05GSUdfSEVBREVSOiAnV2ViQ29y
ZSBjb25maWcuaCcsCi0gICAgICAgIF9QUklNQVJZX0hFQURFUjogJ2hlYWRlciB0aGlzIGZpbGUg
aW1wbGVtZW50cycsCi0gICAgICAgIF9PVEhFUl9IRUFERVI6ICdvdGhlciBoZWFkZXInLAotICAg
ICAgICBfTU9DX0hFQURFUjogJ21vYyBmaWxlJywKLSAgICAgICAgfQotICAgIF9TRUNUSU9OX05B
TUVTID0gewotICAgICAgICBfSU5JVElBTF9TRUNUSU9OOiAiLi4uIG5vdGhpbmcuIiwKLSAgICAg
ICAgX0NPTkZJR19TRUNUSU9OOiAiV2ViQ29yZSBjb25maWcuaC4iLAotICAgICAgICBfUFJJTUFS
WV9TRUNUSU9OOiAnYSBoZWFkZXIgdGhpcyBmaWxlIGltcGxlbWVudHMuJywKLSAgICAgICAgX09U
SEVSX1NFQ1RJT046ICdvdGhlciBoZWFkZXIuJywKLSAgICAgICAgfQotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYpOgotICAgICAgICBkaWN0Ll9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuX3Nl
Y3Rpb24gPSBzZWxmLl9JTklUSUFMX1NFQ1RJT04KLSAgICAgICAgc2VsZi5fdmlzaXRlZF9wcmlt
YXJ5X3NlY3Rpb24gPSBGYWxzZQotICAgICAgICBzZWxmLmhlYWRlcl90eXBlcyA9IGRpY3QoKTsK
LQotICAgIGRlZiB2aXNpdGVkX3ByaW1hcnlfc2VjdGlvbihzZWxmKToKLSAgICAgICAgcmV0dXJu
IHNlbGYuX3Zpc2l0ZWRfcHJpbWFyeV9zZWN0aW9uCi0KLSAgICBkZWYgY2hlY2tfbmV4dF9pbmNs
dWRlX29yZGVyKHNlbGYsIGhlYWRlcl90eXBlLCBmaWxlX2lzX2hlYWRlcik6Ci0gICAgICAgICIi
IlJldHVybnMgYSBub24tZW1wdHkgZXJyb3IgbWVzc2FnZSBpZiB0aGUgbmV4dCBoZWFkZXIgaXMg
b3V0IG9mIG9yZGVyLgotCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gYWxzbyB1cGRhdGVzIHRoZSBp
bnRlcm5hbCBzdGF0ZSB0byBiZSByZWFkeSB0byBjaGVjawotICAgICAgICB0aGUgbmV4dCBpbmNs
dWRlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgaGVhZGVyX3R5cGU6IE9uZSBvZiB0aGUg
X1hYWF9IRUFERVIgY29uc3RhbnRzIGRlZmluZWQgYWJvdmUuCi0gICAgICAgICAgZmlsZV9pc19o
ZWFkZXI6IFdoZXRoZXIgdGhlIGZpbGUgdGhhdCBvd25zIHRoaXMgX0luY2x1ZGVTdGF0ZSBpcyBp
dHNlbGYgYSBoZWFkZXIKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgIFRoZSBlbXB0eSBz
dHJpbmcgaWYgdGhlIGhlYWRlciBpcyBpbiB0aGUgcmlnaHQgb3JkZXIsIG9yIGFuCi0gICAgICAg
ICAgZXJyb3IgbWVzc2FnZSBkZXNjcmliaW5nIHdoYXQncyB3cm9uZy4KLQotICAgICAgICAiIiIK
LSAgICAgICAgaWYgaGVhZGVyX3R5cGUgPT0gX0NPTkZJR19IRUFERVIgYW5kIGZpbGVfaXNfaGVh
ZGVyOgotICAgICAgICAgICAgcmV0dXJuICdIZWFkZXIgZmlsZSBzaG91bGQgbm90IGNvbnRhaW4g
V2ViQ29yZSBjb25maWcuaC4nCi0gICAgICAgIGlmIGhlYWRlcl90eXBlID09IF9QUklNQVJZX0hF
QURFUiBhbmQgZmlsZV9pc19oZWFkZXI6Ci0gICAgICAgICAgICByZXR1cm4gJ0hlYWRlciBmaWxl
IHNob3VsZCBub3QgY29udGFpbiBpdHNlbGYuJwotICAgICAgICBpZiBoZWFkZXJfdHlwZSA9PSBf
TU9DX0hFQURFUjoKLSAgICAgICAgICAgIHJldHVybiAnJwotCi0gICAgICAgIGVycm9yX21lc3Nh
Z2UgPSAnJwotICAgICAgICBpZiBzZWxmLl9zZWN0aW9uICE9IHNlbGYuX09USEVSX1NFQ1RJT046
Ci0gICAgICAgICAgICBiZWZvcmVfZXJyb3JfbWVzc2FnZSA9ICgnRm91bmQgJXMgYmVmb3JlICVz
JyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fVFlQRV9OQU1F
U1toZWFkZXJfdHlwZV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fU0VDVElPTl9OQU1FU1tzZWxmLl9zZWN0aW9uICsgMV0pKQotICAgICAgICBhZnRlcl9lcnJv
cl9tZXNzYWdlID0gKCdGb3VuZCAlcyBhZnRlciAlcycgJQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoc2VsZi5fVFlQRV9OQU1FU1toZWFkZXJfdHlwZV0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9TRUNUSU9OX05BTUVTW3NlbGYuX3NlY3Rpb25dKSkK
LQotICAgICAgICBpZiBoZWFkZXJfdHlwZSA9PSBfQ09ORklHX0hFQURFUjoKLSAgICAgICAgICAg
IGlmIHNlbGYuX3NlY3Rpb24gPj0gc2VsZi5fQ09ORklHX1NFQ1RJT046Ci0gICAgICAgICAgICAg
ICAgZXJyb3JfbWVzc2FnZSA9IGFmdGVyX2Vycm9yX21lc3NhZ2UKLSAgICAgICAgICAgIHNlbGYu
X3NlY3Rpb24gPSBzZWxmLl9DT05GSUdfU0VDVElPTgotICAgICAgICBlbGlmIGhlYWRlcl90eXBl
ID09IF9QUklNQVJZX0hFQURFUjoKLSAgICAgICAgICAgIGlmIHNlbGYuX3NlY3Rpb24gPj0gc2Vs
Zi5fUFJJTUFSWV9TRUNUSU9OOgotICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSBhZnRl
cl9lcnJvcl9tZXNzYWdlCi0gICAgICAgICAgICBlbGlmIHNlbGYuX3NlY3Rpb24gPCBzZWxmLl9D
T05GSUdfU0VDVElPTjoKLSAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gYmVmb3JlX2Vy
cm9yX21lc3NhZ2UKLSAgICAgICAgICAgIHNlbGYuX3NlY3Rpb24gPSBzZWxmLl9QUklNQVJZX1NF
Q1RJT04KLSAgICAgICAgICAgIHNlbGYuX3Zpc2l0ZWRfcHJpbWFyeV9zZWN0aW9uID0gVHJ1ZQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXNzZXJ0IGhlYWRlcl90eXBlID09IF9PVEhFUl9I
RUFERVIKLSAgICAgICAgICAgIGlmIG5vdCBmaWxlX2lzX2hlYWRlciBhbmQgc2VsZi5fc2VjdGlv
biA8IHNlbGYuX1BSSU1BUllfU0VDVElPTjoKLSAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdl
ID0gYmVmb3JlX2Vycm9yX21lc3NhZ2UKLSAgICAgICAgICAgIHNlbGYuX3NlY3Rpb24gPSBzZWxm
Ll9PVEhFUl9TRUNUSU9OCi0KLSAgICAgICAgcmV0dXJuIGVycm9yX21lc3NhZ2UKLQotCi1jbGFz
cyBfRnVuY3Rpb25TdGF0ZShvYmplY3QpOgotICAgICIiIlRyYWNrcyBjdXJyZW50IGZ1bmN0aW9u
IG5hbWUgYW5kIHRoZSBudW1iZXIgb2YgbGluZXMgaW4gaXRzIGJvZHkuCi0KLSAgICBBdHRyaWJ1
dGVzOgotICAgICAgbWluX2NvbmZpZGVuY2U6IFRoZSBtaW5pbXVtIGNvbmZpZGVuY2UgbGV2ZWwg
dG8gdXNlIHdoaWxlIGNoZWNraW5nIHN0eWxlLgotCi0gICAgIiIiCi0KLSAgICBfTk9STUFMX1RS
SUdHRVIgPSAyNTAgICMgZm9yIC0tdj0wLCA1MDAgZm9yIC0tdj0xLCBldGMuCi0gICAgX1RFU1Rf
VFJJR0dFUiA9IDQwMCAgICAjIGFib3V0IDUwJSBtb3JlIHRoYW4gX05PUk1BTF9UUklHR0VSLgot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1pbl9jb25maWRlbmNlKToKLSAgICAgICAgc2VsZi5t
aW5fY29uZmlkZW5jZSA9IG1pbl9jb25maWRlbmNlCi0gICAgICAgIHNlbGYuY3VycmVudF9mdW5j
dGlvbiA9ICcnCi0gICAgICAgIHNlbGYuaW5fYV9mdW5jdGlvbiA9IEZhbHNlCi0gICAgICAgIHNl
bGYubGluZXNfaW5fZnVuY3Rpb24gPSAwCi0KLSAgICBkZWYgYmVnaW4oc2VsZiwgZnVuY3Rpb25f
bmFtZSk6Ci0gICAgICAgICIiIlN0YXJ0IGFuYWx5emluZyBmdW5jdGlvbiBib2R5LgotCi0gICAg
ICAgIEFyZ3M6Ci0gICAgICAgICAgICBmdW5jdGlvbl9uYW1lOiBUaGUgbmFtZSBvZiB0aGUgZnVu
Y3Rpb24gYmVpbmcgdHJhY2tlZC4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuaW5fYV9mdW5j
dGlvbiA9IFRydWUKLSAgICAgICAgc2VsZi5saW5lc19pbl9mdW5jdGlvbiA9IDAKLSAgICAgICAg
c2VsZi5jdXJyZW50X2Z1bmN0aW9uID0gZnVuY3Rpb25fbmFtZQotCi0gICAgZGVmIGNvdW50KHNl
bGYpOgotICAgICAgICAiIiJDb3VudCBsaW5lIGluIGN1cnJlbnQgZnVuY3Rpb24gYm9keS4iIiIK
LSAgICAgICAgaWYgc2VsZi5pbl9hX2Z1bmN0aW9uOgotICAgICAgICAgICAgc2VsZi5saW5lc19p
bl9mdW5jdGlvbiArPSAxCi0KLSAgICBkZWYgY2hlY2soc2VsZiwgZXJyb3IsIGxpbmVfbnVtYmVy
KToKLSAgICAgICAgIiIiUmVwb3J0IGlmIHRvbyBtYW55IGxpbmVzIGluIGZ1bmN0aW9uIGJvZHku
Ci0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwg
d2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVy
IG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgbWF0Y2gocidU
KEVTVHxlc3QpJywgc2VsZi5jdXJyZW50X2Z1bmN0aW9uKToKLSAgICAgICAgICAgIGJhc2VfdHJp
Z2dlciA9IHNlbGYuX1RFU1RfVFJJR0dFUgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYmFz
ZV90cmlnZ2VyID0gc2VsZi5fTk9STUFMX1RSSUdHRVIKLSAgICAgICAgdHJpZ2dlciA9IGJhc2Vf
dHJpZ2dlciAqIDIgKiogc2VsZi5taW5fY29uZmlkZW5jZQotCi0gICAgICAgIGlmIHNlbGYubGlu
ZXNfaW5fZnVuY3Rpb24gPiB0cmlnZ2VyOgotICAgICAgICAgICAgZXJyb3JfbGV2ZWwgPSBpbnQo
bWF0aC5sb2coc2VsZi5saW5lc19pbl9mdW5jdGlvbiAvIGJhc2VfdHJpZ2dlciwgMikpCi0gICAg
ICAgICAgICAjIDUwID0+IDAsIDEwMCA9PiAxLCAyMDAgPT4gMiwgNDAwID0+IDMsIDgwMCA9PiA0
LCAxNjAwID0+IDUsIC4uLgotICAgICAgICAgICAgaWYgZXJyb3JfbGV2ZWwgPiA1OgotICAgICAg
ICAgICAgICAgIGVycm9yX2xldmVsID0gNQotICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIs
ICdyZWFkYWJpbGl0eS9mbl9zaXplJywgZXJyb3JfbGV2ZWwsCi0gICAgICAgICAgICAgICAgICAn
U21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6JwotICAgICAgICAgICAg
ICAgICAgJyAlcyBoYXMgJWQgbm9uLWNvbW1lbnQgbGluZXMnCi0gICAgICAgICAgICAgICAgICAn
IChlcnJvciB0cmlnZ2VyZWQgYnkgZXhjZWVkaW5nICVkIGxpbmVzKS4nICAlICgKLSAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRfZnVuY3Rpb24sIHNlbGYubGluZXNfaW5fZnVuY3Rp
b24sIHRyaWdnZXIpKQotCi0gICAgZGVmIGVuZChzZWxmKToKLSAgICAgICAgIiIiU3RvcCBhbmFs
aXppbmcgZnVuY3Rpb24gYm9keS4iIiIKLSAgICAgICAgc2VsZi5pbl9hX2Z1bmN0aW9uID0gRmFs
c2UKLQotCi1jbGFzcyBfSW5jbHVkZUVycm9yKEV4Y2VwdGlvbik6Ci0gICAgIiIiSW5kaWNhdGVz
IGEgcHJvYmxlbSB3aXRoIHRoZSBpbmNsdWRlIG9yZGVyIGluIGEgZmlsZS4iIiIKLSAgICBwYXNz
Ci0KLQotZGVmIGlzX2Nfb3Jfb2JqZWN0aXZlX2MoZmlsZV9leHRlbnNpb24pOgotICAgIiIiUmV0
dXJuIHdoZXRoZXIgdGhlIGZpbGUgZXh0ZW5zaW9uIGNvcnJlc3BvbmRzIHRvIEMgb3IgT2JqZWN0
aXZlLUMuCi0KLSAgIEFyZ3M6Ci0gICAgIGZpbGVfZXh0ZW5zaW9uOiBUaGUgZmlsZSBleHRlbnNp
b24gd2l0aG91dCB0aGUgbGVhZGluZyBkb3QuCi0KLSAgICIiIgotICAgcmV0dXJuIGZpbGVfZXh0
ZW5zaW9uIGluIFsnYycsICdtJ10KLQotCi1jbGFzcyBGaWxlSW5mbzoKLSAgICAiIiJQcm92aWRl
cyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgZmlsZW5hbWVzLgotCi0gICAgRmlsZUluZm8gcHJvdmlk
ZXMgZWFzeSBhY2Nlc3MgdG8gdGhlIGNvbXBvbmVudHMgb2YgYSBmaWxlJ3MgcGF0aAotICAgIHJl
bGF0aXZlIHRvIHRoZSBwcm9qZWN0IHJvb3QuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgZmlsZW5hbWUpOgotICAgICAgICBzZWxmLl9maWxlbmFtZSA9IGZpbGVuYW1lCi0KLSAg
ICBkZWYgZnVsbF9uYW1lKHNlbGYpOgotICAgICAgICAiIiJNYWtlIFdpbmRvd3MgcGF0aHMgbGlr
ZSBVbml4LiIiIgotICAgICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKHNlbGYuX2ZpbGVuYW1l
KS5yZXBsYWNlKCdcXCcsICcvJykKLQotICAgIGRlZiByZXBvc2l0b3J5X25hbWUoc2VsZik6Ci0g
ICAgICAgICIiIkZ1bGwgbmFtZSBhZnRlciByZW1vdmluZyB0aGUgbG9jYWwgcGF0aCB0byB0aGUg
cmVwb3NpdG9yeS4KLQotICAgICAgICBJZiB3ZSBoYXZlIGEgcmVhbCBhYnNvbHV0ZSBwYXRoIG5h
bWUgaGVyZSB3ZSBjYW4gdHJ5IHRvIGRvIHNvbWV0aGluZyBzbWFydDoKLSAgICAgICAgZGV0ZWN0
aW5nIHRoZSByb290IG9mIHRoZSBjaGVja291dCBhbmQgdHJ1bmNhdGluZyAvcGF0aC90by9jaGVj
a291dCBmcm9tCi0gICAgICAgIHRoZSBuYW1lIHNvIHRoYXQgd2UgZ2V0IGhlYWRlciBndWFyZHMg
dGhhdCBkb24ndCBpbmNsdWRlIHRoaW5ncyBsaWtlCi0gICAgICAgICJDOlxEb2N1bWVudHMgYW5k
IFNldHRpbmdzXC4uLiIgb3IgIi9ob21lL3VzZXJuYW1lLy4uLiIgaW4gdGhlbSBhbmQgdGh1cwot
ICAgICAgICBwZW9wbGUgb24gZGlmZmVyZW50IGNvbXB1dGVycyB3aG8gaGF2ZSBjaGVja2VkIHRo
ZSBzb3VyY2Ugb3V0IHRvIGRpZmZlcmVudAotICAgICAgICBsb2NhdGlvbnMgd29uJ3Qgc2VlIGJv
Z3VzIGVycm9ycy4KLSAgICAgICAgIiIiCi0gICAgICAgIGZ1bGxuYW1lID0gc2VsZi5mdWxsX25h
bWUoKQotCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZ1bGxuYW1lKToKLSAgICAgICAgICAg
IHByb2plY3RfZGlyID0gb3MucGF0aC5kaXJuYW1lKGZ1bGxuYW1lKQotCi0gICAgICAgICAgICBp
ZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocHJvamVjdF9kaXIsICIuc3ZuIikpOgotICAg
ICAgICAgICAgICAgICMgSWYgdGhlcmUncyBhIC5zdm4gZmlsZSBpbiB0aGUgY3VycmVudCBkaXJl
Y3RvcnksIHdlCi0gICAgICAgICAgICAgICAgIyByZWN1cnNpdmVseSBsb29rIHVwIHRoZSBkaXJl
Y3RvcnkgdHJlZSBmb3IgdGhlIHRvcAotICAgICAgICAgICAgICAgICMgb2YgdGhlIFNWTiBjaGVj
a291dAotICAgICAgICAgICAgICAgIHJvb3RfZGlyID0gcHJvamVjdF9kaXIKLSAgICAgICAgICAg
ICAgICBvbmVfdXBfZGlyID0gb3MucGF0aC5kaXJuYW1lKHJvb3RfZGlyKQotICAgICAgICAgICAg
ICAgIHdoaWxlIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihvbmVfdXBfZGlyLCAiLnN2biIp
KToKLSAgICAgICAgICAgICAgICAgICAgcm9vdF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUocm9vdF9k
aXIpCi0gICAgICAgICAgICAgICAgICAgIG9uZV91cF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob25l
X3VwX2RpcikKLQotICAgICAgICAgICAgICAgIHByZWZpeCA9IG9zLnBhdGguY29tbW9ucHJlZml4
KFtyb290X2RpciwgcHJvamVjdF9kaXJdKQotICAgICAgICAgICAgICAgIHJldHVybiBmdWxsbmFt
ZVtsZW4ocHJlZml4KSArIDE6XQotCi0gICAgICAgICAgICAjIE5vdCBTVk4/IFRyeSB0byBmaW5k
IGEgZ2l0IHRvcCBsZXZlbCBkaXJlY3RvcnkgYnkKLSAgICAgICAgICAgICMgc2VhcmNoaW5nIHVw
IGZyb20gdGhlIGN1cnJlbnQgcGF0aC4KLSAgICAgICAgICAgIHJvb3RfZGlyID0gb3MucGF0aC5k
aXJuYW1lKGZ1bGxuYW1lKQotICAgICAgICAgICAgd2hpbGUgKHJvb3RfZGlyICE9IG9zLnBhdGgu
ZGlybmFtZShyb290X2RpcikKLSAgICAgICAgICAgICAgICAgICBhbmQgbm90IG9zLnBhdGguZXhp
c3RzKG9zLnBhdGguam9pbihyb290X2RpciwgIi5naXQiKSkpOgotICAgICAgICAgICAgICAgIHJv
b3RfZGlyID0gb3MucGF0aC5kaXJuYW1lKHJvb3RfZGlyKQotICAgICAgICAgICAgICAgIGlmIG9z
LnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihyb290X2RpciwgIi5naXQiKSk6Ci0gICAgICAgICAg
ICAgICAgICAgIHByZWZpeCA9IG9zLnBhdGguY29tbW9ucHJlZml4KFtyb290X2RpciwgcHJvamVj
dF9kaXJdKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVsbG5hbWVbbGVuKHByZWZpeCkg
KyAxOl0KLQotICAgICAgICAjIERvbid0IGtub3cgd2hhdCB0byBkbzsgaGVhZGVyIGd1YXJkIHdh
cm5pbmdzIG1heSBiZSB3cm9uZy4uLgotICAgICAgICByZXR1cm4gZnVsbG5hbWUKLQotICAgIGRl
ZiBzcGxpdChzZWxmKToKLSAgICAgICAgIiIiU3BsaXRzIHRoZSBmaWxlIGludG8gdGhlIGRpcmVj
dG9yeSwgYmFzZW5hbWUsIGFuZCBleHRlbnNpb24uCi0KLSAgICAgICAgRm9yICdjaHJvbWUvYnJv
d3Nlci9icm93c2VyLmNwcCcsIFNwbGl0KCkgd291bGQKLSAgICAgICAgcmV0dXJuICgnY2hyb21l
L2Jyb3dzZXInLCAnYnJvd3NlcicsICcuY3BwJykKLQotICAgICAgICBSZXR1cm5zOgotICAgICAg
ICAgIEEgdHVwbGUgb2YgKGRpcmVjdG9yeSwgYmFzZW5hbWUsIGV4dGVuc2lvbikuCi0gICAgICAg
ICIiIgotCi0gICAgICAgIGdvb2dsZW5hbWUgPSBzZWxmLnJlcG9zaXRvcnlfbmFtZSgpCi0gICAg
ICAgIHByb2plY3QsIHJlc3QgPSBvcy5wYXRoLnNwbGl0KGdvb2dsZW5hbWUpCi0gICAgICAgIHJl
dHVybiAocHJvamVjdCwpICsgb3MucGF0aC5zcGxpdGV4dChyZXN0KQotCi0gICAgZGVmIGJhc2Vf
bmFtZShzZWxmKToKLSAgICAgICAgIiIiRmlsZSBiYXNlIG5hbWUgLSB0ZXh0IGFmdGVyIHRoZSBm
aW5hbCBzbGFzaCwgYmVmb3JlIHRoZSBmaW5hbCBwZXJpb2QuIiIiCi0gICAgICAgIHJldHVybiBz
ZWxmLnNwbGl0KClbMV0KLQotICAgIGRlZiBleHRlbnNpb24oc2VsZik6Ci0gICAgICAgICIiIkZp
bGUgZXh0ZW5zaW9uIC0gdGV4dCBmb2xsb3dpbmcgdGhlIGZpbmFsIHBlcmlvZC4iIiIKLSAgICAg
ICAgcmV0dXJuIHNlbGYuc3BsaXQoKVsyXQotCi0gICAgZGVmIG5vX2V4dGVuc2lvbihzZWxmKToK
LSAgICAgICAgIiIiRmlsZSBoYXMgbm8gc291cmNlIGZpbGUgZXh0ZW5zaW9uLiIiIgotICAgICAg
ICByZXR1cm4gJy8nLmpvaW4oc2VsZi5zcGxpdCgpWzA6Ml0pCi0KLSAgICBkZWYgaXNfc291cmNl
KHNlbGYpOgotICAgICAgICAiIiJGaWxlIGhhcyBhIHNvdXJjZSBmaWxlIGV4dGVuc2lvbi4iIiIK
LSAgICAgICAgcmV0dXJuIHNlbGYuZXh0ZW5zaW9uKClbMTpdIGluICgnYycsICdjYycsICdjcHAn
LCAnY3h4JykKLQotCi0jIE1hdGNoZXMgc3RhbmRhcmQgQysrIGVzY2FwZSBlc2VxdWVuY2VzIHBl
ciAyLjEzLjIuMyBvZiB0aGUgQysrIHN0YW5kYXJkLgotX1JFX1BBVFRFUk5fQ0xFQU5TRV9MSU5F
X0VTQ0FQRVMgPSByZS5jb21waWxlKAotICAgIHInXFwoW2FiZm5ydHY/IlxcXCddfFxkK3x4WzAt
OWEtZkEtRl0rKScpCi0jIE1hdGNoZXMgc3RyaW5ncy4gIEVzY2FwZSBjb2RlcyBzaG91bGQgYWxy
ZWFkeSBiZSByZW1vdmVkIGJ5IEVTQ0FQRVMuCi1fUkVfUEFUVEVSTl9DTEVBTlNFX0xJTkVfRE9V
QkxFX1FVT1RFUyA9IHJlLmNvbXBpbGUociciW14iXSoiJykKLSMgTWF0Y2hlcyBjaGFyYWN0ZXJz
LiAgRXNjYXBlIGNvZGVzIHNob3VsZCBhbHJlYWR5IGJlIHJlbW92ZWQgYnkgRVNDQVBFUy4KLV9S
RV9QQVRURVJOX0NMRUFOU0VfTElORV9TSU5HTEVfUVVPVEVTID0gcmUuY29tcGlsZShyIicuJyIp
Ci0jIE1hdGNoZXMgbXVsdGktbGluZSBDKysgY29tbWVudHMuCi0jIFRoaXMgUkUgaXMgYSBsaXR0
bGUgYml0IG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBvbmUgbWlnaHQgZXhwZWN0LCBiZWNhdXNlIHdl
Ci0jIGhhdmUgdG8gdGFrZSBjYXJlIG9mIHNwYWNlIHJlbW92YWxzIHRvb2xzIHNvIHdlIGNhbiBo
YW5kbGUgY29tbWVudHMgaW5zaWRlCi0jIHN0YXRlbWVudHMgYmV0dGVyLgotIyBUaGUgY3VycmVu
dCBydWxlIGlzOiBXZSBvbmx5IGNsZWFyIHNwYWNlcyBmcm9tIGJvdGggc2lkZXMgd2hlbiB3ZSdy
ZSBhdCB0aGUKLSMgZW5kIG9mIHRoZSBsaW5lLiBPdGhlcndpc2UsIHdlIHRyeSB0byByZW1vdmUg
c3BhY2VzIGZyb20gdGhlIHJpZ2h0IHNpZGUsCi0jIGlmIHRoaXMgZG9lc24ndCB3b3JrIHdlIHRy
eSBvbiBsZWZ0IHNpZGUgYnV0IG9ubHkgaWYgdGhlcmUncyBhIG5vbi1jaGFyYWN0ZXIKLSMgb24g
dGhlIHJpZ2h0LgotX1JFX1BBVFRFUk5fQ0xFQU5TRV9MSU5FX0NfQ09NTUVOVFMgPSByZS5jb21w
aWxlKAotICAgIHIiIiIoXHMqL1wqLipcKi9ccyokfAotICAgICAgICAgICAgL1wqLipcKi9ccyt8
Ci0gICAgICAgICBccysvXCouKlwqLyg/PVxXKXwKLSAgICAgICAgICAgIC9cKi4qXCovKSIiIiwg
cmUuVkVSQk9TRSkKLQotCi1kZWYgaXNfY3BwX3N0cmluZyhsaW5lKToKLSAgICAiIiJEb2VzIGxp
bmUgdGVybWluYXRlIHNvLCB0aGF0IHRoZSBuZXh0IHN5bWJvbCBpcyBpbiBzdHJpbmcgY29uc3Rh
bnQuCi0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNvbnNpZGVyIHNpbmdsZS1saW5lIG5v
ciBtdWx0aS1saW5lIGNvbW1lbnRzLgotCi0gICAgQXJnczoKLSAgICAgIGxpbmU6IGlzIGEgcGFy
dGlhbCBsaW5lIG9mIGNvZGUgc3RhcnRpbmcgZnJvbSB0aGUgMC4ubi4KLQotICAgIFJldHVybnM6
Ci0gICAgICBUcnVlLCBpZiBuZXh0IGNoYXJhY3RlciBhcHBlbmRlZCB0byAnbGluZScgaXMgaW5z
aWRlIGEKLSAgICAgIHN0cmluZyBjb25zdGFudC4KLSAgICAiIiIKLQotICAgIGxpbmUgPSBsaW5l
LnJlcGxhY2UocidcXCcsICdYWCcpICAjIGFmdGVyIHRoaXMsIFxcIiBkb2VzIG5vdCBtYXRjaCB0
byBcIgotICAgIHJldHVybiAoKGxpbmUuY291bnQoJyInKSAtIGxpbmUuY291bnQocidcIicpIC0g
bGluZS5jb3VudCgiJ1wiJyIpKSAmIDEpID09IDEKLQotCi1kZWYgZmluZF9uZXh0X211bHRpX2xp
bmVfY29tbWVudF9zdGFydChsaW5lcywgbGluZV9pbmRleCk6Ci0gICAgIiIiRmluZCB0aGUgYmVn
aW5uaW5nIG1hcmtlciBmb3IgYSBtdWx0aWxpbmUgY29tbWVudC4iIiIKLSAgICB3aGlsZSBsaW5l
X2luZGV4IDwgbGVuKGxpbmVzKToKLSAgICAgICAgaWYgbGluZXNbbGluZV9pbmRleF0uc3RyaXAo
KS5zdGFydHN3aXRoKCcvKicpOgotICAgICAgICAgICAgIyBPbmx5IHJldHVybiB0aGlzIG1hcmtl
ciBpZiB0aGUgY29tbWVudCBnb2VzIGJleW9uZCB0aGlzIGxpbmUKLSAgICAgICAgICAgIGlmIGxp
bmVzW2xpbmVfaW5kZXhdLnN0cmlwKCkuZmluZCgnKi8nLCAyKSA8IDA6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGxpbmVfaW5kZXgKLSAgICAgICAgbGluZV9pbmRleCArPSAxCi0gICAgcmV0dXJu
IGxlbihsaW5lcykKLQotCi1kZWYgZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9lbmQobGlu
ZXMsIGxpbmVfaW5kZXgpOgotICAgICIiIldlIGFyZSBpbnNpZGUgYSBjb21tZW50LCBmaW5kIHRo
ZSBlbmQgbWFya2VyLiIiIgotICAgIHdoaWxlIGxpbmVfaW5kZXggPCBsZW4obGluZXMpOgotICAg
ICAgICBpZiBsaW5lc1tsaW5lX2luZGV4XS5zdHJpcCgpLmVuZHN3aXRoKCcqLycpOgotICAgICAg
ICAgICAgcmV0dXJuIGxpbmVfaW5kZXgKLSAgICAgICAgbGluZV9pbmRleCArPSAxCi0gICAgcmV0
dXJuIGxlbihsaW5lcykKLQotCi1kZWYgcmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHNfZnJvbV9y
YW5nZShsaW5lcywgYmVnaW4sIGVuZCk6Ci0gICAgIiIiQ2xlYXJzIGEgcmFuZ2Ugb2YgbGluZXMg
Zm9yIG11bHRpLWxpbmUgY29tbWVudHMuIiIiCi0gICAgIyBIYXZpbmcgLy8gZHVtbXkgY29tbWVu
dHMgbWFrZXMgdGhlIGxpbmVzIG5vbi1lbXB0eSwgc28gd2Ugd2lsbCBub3QgZ2V0Ci0gICAgIyB1
bm5lY2Vzc2FyeSBibGFuayBsaW5lIHdhcm5pbmdzIGxhdGVyIGluIHRoZSBjb2RlLgotICAgIGZv
ciBpIGluIHJhbmdlKGJlZ2luLCBlbmQpOgotICAgICAgICBsaW5lc1tpXSA9ICcvLyBkdW1teScK
LQotCi1kZWYgcmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMobGluZXMsIGVycm9yKToKLSAgICAi
IiJSZW1vdmVzIG11bHRpbGluZSAoYy1zdHlsZSkgY29tbWVudHMgZnJvbSBsaW5lcy4iIiIKLSAg
ICBsaW5lX2luZGV4ID0gMAotICAgIHdoaWxlIGxpbmVfaW5kZXggPCBsZW4obGluZXMpOgotICAg
ICAgICBsaW5lX2luZGV4X2JlZ2luID0gZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9zdGFy
dChsaW5lcywgbGluZV9pbmRleCkKLSAgICAgICAgaWYgbGluZV9pbmRleF9iZWdpbiA+PSBsZW4o
bGluZXMpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGxpbmVfaW5kZXhfZW5kID0gZmlu
ZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9lbmQobGluZXMsIGxpbmVfaW5kZXhfYmVnaW4pCi0g
ICAgICAgIGlmIGxpbmVfaW5kZXhfZW5kID49IGxlbihsaW5lcyk6Ci0gICAgICAgICAgICBlcnJv
cihsaW5lX2luZGV4X2JlZ2luICsgMSwgJ3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50Jywg
NSwKLSAgICAgICAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCBlbmQgb2YgbXVsdGktbGluZSBj
b21tZW50JykKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICByZW1vdmVfbXVsdGlfbGluZV9j
b21tZW50c19mcm9tX3JhbmdlKGxpbmVzLCBsaW5lX2luZGV4X2JlZ2luLCBsaW5lX2luZGV4X2Vu
ZCArIDEpCi0gICAgICAgIGxpbmVfaW5kZXggPSBsaW5lX2luZGV4X2VuZCArIDEKLQotCi1kZWYg
Y2xlYW5zZV9jb21tZW50cyhsaW5lKToKLSAgICAiIiJSZW1vdmVzIC8vLWNvbW1lbnRzIGFuZCBz
aW5nbGUtbGluZSBDLXN0eWxlIC8qICovIGNvbW1lbnRzLgotCi0gICAgQXJnczoKLSAgICAgIGxp
bmU6IEEgbGluZSBvZiBDKysgc291cmNlLgotCi0gICAgUmV0dXJuczoKLSAgICAgIFRoZSBsaW5l
IHdpdGggc2luZ2xlLWxpbmUgY29tbWVudHMgcmVtb3ZlZC4KLSAgICAiIiIKLSAgICBjb21tZW50
X3Bvc2l0aW9uID0gbGluZS5maW5kKCcvLycpCi0gICAgaWYgY29tbWVudF9wb3NpdGlvbiAhPSAt
MSBhbmQgbm90IGlzX2NwcF9zdHJpbmcobGluZVs6Y29tbWVudF9wb3NpdGlvbl0pOgotICAgICAg
ICBsaW5lID0gbGluZVs6Y29tbWVudF9wb3NpdGlvbl0KLSAgICAjIGdldCByaWQgb2YgLyogLi4u
ICovCi0gICAgcmV0dXJuIF9SRV9QQVRURVJOX0NMRUFOU0VfTElORV9DX0NPTU1FTlRTLnN1Yign
JywgbGluZSkKLQotCi1jbGFzcyBDbGVhbnNlZExpbmVzKG9iamVjdCk6Ci0gICAgIiIiSG9sZHMg
MyBjb3BpZXMgb2YgYWxsIGxpbmVzIHdpdGggZGlmZmVyZW50IHByZXByb2Nlc3NpbmcgYXBwbGll
ZCB0byB0aGVtLgotCi0gICAgMSkgZWxpZGVkIG1lbWJlciBjb250YWlucyBsaW5lcyB3aXRob3V0
IHN0cmluZ3MgYW5kIGNvbW1lbnRzLAotICAgIDIpIGxpbmVzIG1lbWJlciBjb250YWlucyBsaW5l
cyB3aXRob3V0IGNvbW1lbnRzLCBhbmQKLSAgICAzKSByYXcgbWVtYmVyIGNvbnRhaW5zIGFsbCB0
aGUgbGluZXMgd2l0aG91dCBwcm9jZXNzaW5nLgotICAgIEFsbCB0aGVzZSB0aHJlZSBtZW1iZXJz
IGFyZSBvZiA8dHlwZSAnbGlzdCc+LCBhbmQgb2YgdGhlIHNhbWUgbGVuZ3RoLgotICAgICIiIgot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVzKToKLSAgICAgICAgc2VsZi5lbGlkZWQgPSBb
XQotICAgICAgICBzZWxmLmxpbmVzID0gW10KLSAgICAgICAgc2VsZi5yYXdfbGluZXMgPSBsaW5l
cwotICAgICAgICBzZWxmLl9udW1fbGluZXMgPSBsZW4obGluZXMpCi0gICAgICAgIGZvciBsaW5l
X251bWJlciBpbiByYW5nZShsZW4obGluZXMpKToKLSAgICAgICAgICAgIHNlbGYubGluZXMuYXBw
ZW5kKGNsZWFuc2VfY29tbWVudHMobGluZXNbbGluZV9udW1iZXJdKSkKLSAgICAgICAgICAgIGVs
aWRlZCA9IHNlbGYuY29sbGFwc2Vfc3RyaW5ncyhsaW5lc1tsaW5lX251bWJlcl0pCi0gICAgICAg
ICAgICBzZWxmLmVsaWRlZC5hcHBlbmQoY2xlYW5zZV9jb21tZW50cyhlbGlkZWQpKQotCi0gICAg
ZGVmIG51bV9saW5lcyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGxp
bmVzIHJlcHJlc2VudGVkLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fbnVtX2xpbmVzCi0KLSAg
ICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGNvbGxhcHNlX3N0cmluZ3MoZWxpZGVkKToKLSAgICAg
ICAgIiIiQ29sbGFwc2VzIHN0cmluZ3MgYW5kIGNoYXJzIG9uIGEgbGluZSB0byBzaW1wbGUgIiIg
b3IgJycgYmxvY2tzLgotCi0gICAgICAgIFdlIG5peCBzdHJpbmdzIGZpcnN0IHNvIHdlJ3JlIG5v
dCBmb29sZWQgYnkgdGV4dCBsaWtlICciaHR0cDovLyInCi0KLSAgICAgICAgQXJnczoKLSAgICAg
ICAgICBlbGlkZWQ6IFRoZSBsaW5lIGJlaW5nIHByb2Nlc3NlZC4KLQotICAgICAgICBSZXR1cm5z
OgotICAgICAgICAgIFRoZSBsaW5lIHdpdGggY29sbGFwc2VkIHN0cmluZ3MuCi0gICAgICAgICIi
IgotICAgICAgICBpZiBub3QgX1JFX1BBVFRFUk5fSU5DTFVERS5tYXRjaChlbGlkZWQpOgotICAg
ICAgICAgICAgIyBSZW1vdmUgZXNjYXBlZCBjaGFyYWN0ZXJzIGZpcnN0IHRvIG1ha2UgcXVvdGUv
c2luZ2xlIHF1b3RlIGNvbGxhcHNpbmcKLSAgICAgICAgICAgICMgYmFzaWMuICBUaGluZ3MgdGhh
dCBsb29rIGxpa2UgZXNjYXBlZCBjaGFyYWN0ZXJzIHNob3VsZG4ndCBvY2N1cgotICAgICAgICAg
ICAgIyBvdXRzaWRlIG9mIHN0cmluZ3MgYW5kIGNoYXJzLgotICAgICAgICAgICAgZWxpZGVkID0g
X1JFX1BBVFRFUk5fQ0xFQU5TRV9MSU5FX0VTQ0FQRVMuc3ViKCcnLCBlbGlkZWQpCi0gICAgICAg
ICAgICBlbGlkZWQgPSBfUkVfUEFUVEVSTl9DTEVBTlNFX0xJTkVfU0lOR0xFX1FVT1RFUy5zdWIo
IicnIiwgZWxpZGVkKQotICAgICAgICAgICAgZWxpZGVkID0gX1JFX1BBVFRFUk5fQ0xFQU5TRV9M
SU5FX0RPVUJMRV9RVU9URVMuc3ViKCciIicsIGVsaWRlZCkKLSAgICAgICAgcmV0dXJuIGVsaWRl
ZAotCi0KLWRlZiBjbG9zZV9leHByZXNzaW9uKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgcG9z
KToKLSAgICAiIiJJZiBpbnB1dCBwb2ludHMgdG8gKCBvciB7IG9yIFssIGZpbmRzIHRoZSBwb3Np
dGlvbiB0aGF0IGNsb3NlcyBpdC4KLQotICAgIElmIGxpbmVzW2xpbmVfbnVtYmVyXVtwb3NdIHBv
aW50cyB0byBhICcoJyBvciAneycgb3IgJ1snLCBmaW5kcyB0aGUgdGhlCi0gICAgbGluZV9udW1i
ZXIvcG9zIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgY2xvc2luZyBvZiB0aGUgZXhwcmVzc2lvbi4K
LQotICAgIEFyZ3M6Ci0gICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNl
IGNvbnRhaW5pbmcgdGhlIGZpbGUuCi0gICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0
aGUgbGluZSB0byBjaGVjay4KLSAgICAgIHBvczogQSBwb3NpdGlvbiBvbiB0aGUgbGluZS4KLQot
ICAgIFJldHVybnM6Ci0gICAgICBBIHR1cGxlIChsaW5lLCBsaW5lX251bWJlciwgcG9zKSBwb2lu
dGVyICpwYXN0KiB0aGUgY2xvc2luZyBicmFjZSwgb3IKLSAgICAgIChsaW5lLCBsZW4obGluZXMp
LCAtMSkgaWYgd2UgbmV2ZXIgZmluZCBhIGNsb3NlLiAgTm90ZSB3ZSBpZ25vcmUKLSAgICAgIHN0
cmluZ3MgYW5kIGNvbW1lbnRzIHdoZW4gbWF0Y2hpbmc7IGFuZCB0aGUgbGluZSB3ZSByZXR1cm4g
aXMgdGhlCi0gICAgICAnY2xlYW5zZWQnIGxpbmUgYXQgbGluZV9udW1iZXIuCi0gICAgIiIiCi0K
LSAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXQotICAgIHN0YXJ0X2No
YXJhY3RlciA9IGxpbmVbcG9zXQotICAgIGlmIHN0YXJ0X2NoYXJhY3RlciBub3QgaW4gJyh7Wyc6
Ci0gICAgICAgIHJldHVybiAobGluZSwgY2xlYW5fbGluZXMubnVtX2xpbmVzKCksIC0xKQotICAg
IGlmIHN0YXJ0X2NoYXJhY3RlciA9PSAnKCc6Ci0gICAgICAgIGVuZF9jaGFyYWN0ZXIgPSAnKScK
LSAgICBpZiBzdGFydF9jaGFyYWN0ZXIgPT0gJ1snOgotICAgICAgICBlbmRfY2hhcmFjdGVyID0g
J10nCi0gICAgaWYgc3RhcnRfY2hhcmFjdGVyID09ICd7JzoKLSAgICAgICAgZW5kX2NoYXJhY3Rl
ciA9ICd9JwotCi0gICAgbnVtX29wZW4gPSBsaW5lLmNvdW50KHN0YXJ0X2NoYXJhY3RlcikgLSBs
aW5lLmNvdW50KGVuZF9jaGFyYWN0ZXIpCi0gICAgd2hpbGUgbGluZV9udW1iZXIgPCBjbGVhbl9s
aW5lcy5udW1fbGluZXMoKSBhbmQgbnVtX29wZW4gPiAwOgotICAgICAgICBsaW5lX251bWJlciAr
PSAxCi0gICAgICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCi0gICAg
ICAgIG51bV9vcGVuICs9IGxpbmUuY291bnQoc3RhcnRfY2hhcmFjdGVyKSAtIGxpbmUuY291bnQo
ZW5kX2NoYXJhY3RlcikKLSAgICAjIE9LLCBub3cgZmluZCB0aGUgZW5kX2NoYXJhY3RlciB0aGF0
IGFjdHVhbGx5IGdvdCB1cyBiYWNrIHRvIGV2ZW4KLSAgICBlbmRwb3MgPSBsZW4obGluZSkKLSAg
ICB3aGlsZSBudW1fb3BlbiA+PSAwOgotICAgICAgICBlbmRwb3MgPSBsaW5lLnJmaW5kKCcpJywg
MCwgZW5kcG9zKQotICAgICAgICBudW1fb3BlbiAtPSAxICAgICAgICAgICAgICAgICAjIGNob3Bw
ZWQgb2ZmIGFub3RoZXIgKQotICAgIHJldHVybiAobGluZSwgbGluZV9udW1iZXIsIGVuZHBvcyAr
IDEpCi0KLQotZGVmIGNoZWNrX2Zvcl9jb3B5cmlnaHQobGluZXMsIGVycm9yKToKLSAgICAiIiJM
b2dzIGFuIGVycm9yIGlmIG5vIENvcHlyaWdodCBtZXNzYWdlIGFwcGVhcnMgYXQgdGhlIHRvcCBv
ZiB0aGUgZmlsZS4iIiIKLQotICAgICMgV2UnbGwgc2F5IGl0IHNob3VsZCBvY2N1ciBieSBsaW5l
IDEwLiBEb24ndCBmb3JnZXQgdGhlcmUncyBhCi0gICAgIyBkdW1teSBsaW5lIGF0IHRoZSBmcm9u
dC4KLSAgICBmb3IgbGluZSBpbiB4cmFuZ2UoMSwgbWluKGxlbihsaW5lcyksIDExKSk6Ci0gICAg
ICAgIGlmIHJlLnNlYXJjaChyJ0NvcHlyaWdodCcsIGxpbmVzW2xpbmVdLCByZS5JKToKLSAgICAg
ICAgICAgIGJyZWFrCi0gICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICMgbWVhbnMgbm8g
Y29weXJpZ2h0IGxpbmUgd2FzIGZvdW5kCi0gICAgICAgIGVycm9yKDAsICdsZWdhbC9jb3B5cmln
aHQnLCA1LAotICAgICAgICAgICAgICAnTm8gY29weXJpZ2h0IG1lc3NhZ2UgZm91bmQuICAnCi0g
ICAgICAgICAgICAgICdZb3Ugc2hvdWxkIGhhdmUgYSBsaW5lOiAiQ29weXJpZ2h0IFt5ZWFyXSA8
Q29weXJpZ2h0IE93bmVyPiInKQotCi0KLWRlZiBnZXRfaGVhZGVyX2d1YXJkX2NwcF92YXJpYWJs
ZShmaWxlbmFtZSk6Ci0gICAgIiIiUmV0dXJucyB0aGUgQ1BQIHZhcmlhYmxlIHRoYXQgc2hvdWxk
IGJlIHVzZWQgYXMgYSBoZWFkZXIgZ3VhcmQuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6
IFRoZSBuYW1lIG9mIGEgQysrIGhlYWRlciBmaWxlLgotCi0gICAgUmV0dXJuczoKLSAgICAgIFRo
ZSBDUFAgdmFyaWFibGUgdGhhdCBzaG91bGQgYmUgdXNlZCBhcyBhIGhlYWRlciBndWFyZCBpbiB0
aGUKLSAgICAgIG5hbWVkIGZpbGUuCi0KLSAgICAiIiIKLQotICAgICMgUmVzdG9yZXMgb3JpZ2lu
YWwgZmlsZW5hbWUgaW4gY2FzZSB0aGF0IHN0eWxlIGNoZWNrZXIgaXMgaW52b2tlZCBmcm9tIEVt
YWNzJ3MKLSAgICAjIGZseW1ha2UuCi0gICAgZmlsZW5hbWUgPSByZS5zdWIocidfZmx5bWFrZVwu
aCQnLCAnLmgnLCBmaWxlbmFtZSkKLQotICAgIHJldHVybiBzdWIocidbLS5cc10nLCAnXycsIG9z
LnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpKQotCi0KLWRlZiBjaGVja19mb3JfaGVhZGVyX2d1YXJk
KGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpOgotICAgICIiIkNoZWNrcyB0aGF0IHRoZSBmaWxlIGNv
bnRhaW5zIGEgaGVhZGVyIGd1YXJkLgotCi0gICAgTG9ncyBhbiBlcnJvciBpZiBubyAjaWZuZGVm
IGhlYWRlciBndWFyZCBpcyBwcmVzZW50LiAgRm9yIG90aGVyCi0gICAgaGVhZGVycywgY2hlY2tz
IHRoYXQgdGhlIGZ1bGwgcGF0aG5hbWUgaXMgdXNlZC4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxl
bmFtZTogVGhlIG5hbWUgb2YgdGhlIEMrKyBoZWFkZXIgZmlsZS4KLSAgICAgIGxpbmVzOiBBbiBh
cnJheSBvZiBzdHJpbmdzLCBlYWNoIHJlcHJlc2VudGluZyBhIGxpbmUgb2YgdGhlIGZpbGUuCi0g
ICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgot
ICAgICIiIgotCi0gICAgY3BwdmFyID0gZ2V0X2hlYWRlcl9ndWFyZF9jcHBfdmFyaWFibGUoZmls
ZW5hbWUpCi0KLSAgICBpZm5kZWYgPSBOb25lCi0gICAgaWZuZGVmX2xpbmVfbnVtYmVyID0gMAot
ICAgIGRlZmluZSA9IE5vbmUKLSAgICBmb3IgbGluZV9udW1iZXIsIGxpbmUgaW4gZW51bWVyYXRl
KGxpbmVzKToKLSAgICAgICAgbGluZV9zcGxpdCA9IGxpbmUuc3BsaXQoKQotICAgICAgICBpZiBs
ZW4obGluZV9zcGxpdCkgPj0gMjoKLSAgICAgICAgICAgICMgZmluZCB0aGUgZmlyc3Qgb2NjdXJy
ZW5jZSBvZiAjaWZuZGVmIGFuZCAjZGVmaW5lLCBzYXZlIGFyZwotICAgICAgICAgICAgaWYgbm90
IGlmbmRlZiBhbmQgbGluZV9zcGxpdFswXSA9PSAnI2lmbmRlZic6Ci0gICAgICAgICAgICAgICAg
IyBzZXQgaWZuZGVmIHRvIHRoZSBoZWFkZXIgZ3VhcmQgcHJlc2VudGVkIG9uIHRoZSAjaWZuZGVm
IGxpbmUuCi0gICAgICAgICAgICAgICAgaWZuZGVmID0gbGluZV9zcGxpdFsxXQotICAgICAgICAg
ICAgICAgIGlmbmRlZl9saW5lX251bWJlciA9IGxpbmVfbnVtYmVyCi0gICAgICAgICAgICBpZiBu
b3QgZGVmaW5lIGFuZCBsaW5lX3NwbGl0WzBdID09ICcjZGVmaW5lJzoKLSAgICAgICAgICAgICAg
ICBkZWZpbmUgPSBsaW5lX3NwbGl0WzFdCi0gICAgICAgICAgICBpZiBkZWZpbmUgYW5kIGlmbmRl
ZjoKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgaWYgbm90IGlmbmRlZiBvciBub3QgZGVm
aW5lIG9yIGlmbmRlZiAhPSBkZWZpbmU6Ci0gICAgICAgIGVycm9yKDAsICdidWlsZC9oZWFkZXJf
Z3VhcmQnLCA1LAotICAgICAgICAgICAgICAnTm8gI2lmbmRlZiBoZWFkZXIgZ3VhcmQgZm91bmQs
IHN1Z2dlc3RlZCBDUFAgdmFyaWFibGUgaXM6ICVzJyAlCi0gICAgICAgICAgICAgIGNwcHZhcikK
LSAgICAgICAgcmV0dXJuCi0KLSAgICAjIFRoZSBndWFyZCBzaG91bGQgYmUgRmlsZV9oLgotICAg
IGlmIGlmbmRlZiAhPSBjcHB2YXI6Ci0gICAgICAgIGVycm9yKGlmbmRlZl9saW5lX251bWJlciwg
J2J1aWxkL2hlYWRlcl9ndWFyZCcsIDUsCi0gICAgICAgICAgICAgICcjaWZuZGVmIGhlYWRlciBn
dWFyZCBoYXMgd3Jvbmcgc3R5bGUsIHBsZWFzZSB1c2U6ICVzJyAlIGNwcHZhcikKLQotCi1kZWYg
Y2hlY2tfZm9yX3VuaWNvZGVfcmVwbGFjZW1lbnRfY2hhcmFjdGVycyhsaW5lcywgZXJyb3IpOgot
ICAgICIiIkxvZ3MgYW4gZXJyb3IgZm9yIGVhY2ggbGluZSBjb250YWluaW5nIFVuaWNvZGUgcmVw
bGFjZW1lbnQgY2hhcmFjdGVycy4KLQotICAgIFRoZXNlIGluZGljYXRlIHRoYXQgZWl0aGVyIHRo
ZSBmaWxlIGNvbnRhaW5lZCBpbnZhbGlkIFVURi04IChsaWtlbHkpCi0gICAgb3IgVW5pY29kZSBy
ZXBsYWNlbWVudCBjaGFyYWN0ZXJzICh3aGljaCBpdCBzaG91bGRuJ3QpLiAgTm90ZSB0aGF0Ci0g
ICAgaXQncyBwb3NzaWJsZSBmb3IgdGhpcyB0byB0aHJvdyBvZmYgbGluZSBudW1iZXJpbmcgaWYg
dGhlIGludmFsaWQKLSAgICBVVEYtOCBvY2N1cnJlZCBhZGphY2VudCB0byBhIG5ld2xpbmUuCi0K
LSAgICBBcmdzOgotICAgICAgbGluZXM6IEFuIGFycmF5IG9mIHN0cmluZ3MsIGVhY2ggcmVwcmVz
ZW50aW5nIGEgbGluZSBvZiB0aGUgZmlsZS4KLSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8g
Y2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCi0gICAgIiIiCi0gICAgZm9yIGxpbmVfbnVtYmVy
LCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6Ci0gICAgICAgIGlmIHUnXHVmZmZkJyBpbiBsaW5l
OgotICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS91dGY4JywgNSwK
LSAgICAgICAgICAgICAgICAgICdMaW5lIGNvbnRhaW5zIGludmFsaWQgVVRGLTggKG9yIFVuaWNv
ZGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyKS4nKQotCi0KLWRlZiBjaGVja19mb3JfbmV3X2xpbmVf
YXRfZW9mKGxpbmVzLCBlcnJvcik6Ci0gICAgIiIiTG9ncyBhbiBlcnJvciBpZiB0aGVyZSBpcyBu
byBuZXdsaW5lIGNoYXIgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZS4KLQotICAgIEFyZ3M6Ci0gICAg
ICBsaW5lczogQW4gYXJyYXkgb2Ygc3RyaW5ncywgZWFjaCByZXByZXNlbnRpbmcgYSBsaW5lIG9m
IHRoZSBmaWxlLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVy
cm9ycyBmb3VuZC4KLSAgICAiIiIKLQotICAgICMgVGhlIGFycmF5IGxpbmVzKCkgd2FzIGNyZWF0
ZWQgYnkgYWRkaW5nIHR3byBuZXdsaW5lcyB0byB0aGUKLSAgICAjIG9yaWdpbmFsIGZpbGUgKGdv
IGZpZ3VyZSksIHRoZW4gc3BsaXR0aW5nIG9uIFxuLgotICAgICMgVG8gdmVyaWZ5IHRoYXQgdGhl
IGZpbGUgZW5kcyBpbiBcbiwgd2UganVzdCBoYXZlIHRvIG1ha2Ugc3VyZSB0aGUKLSAgICAjIGxh
c3QtYnV0LXR3byBlbGVtZW50IG9mIGxpbmVzKCkgZXhpc3RzIGFuZCBpcyBlbXB0eS4KLSAgICBp
ZiBsZW4obGluZXMpIDwgMyBvciBsaW5lc1stMl06Ci0gICAgICAgIGVycm9yKGxlbihsaW5lcykg
LSAyLCAnd2hpdGVzcGFjZS9lbmRpbmdfbmV3bGluZScsIDUsCi0gICAgICAgICAgICAgICdDb3Vs
ZCBub3QgZmluZCBhIG5ld2xpbmUgY2hhcmFjdGVyIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUuJykK
LQotCi1kZWYgY2hlY2tfZm9yX211bHRpbGluZV9jb21tZW50c19hbmRfc3RyaW5ncyhjbGVhbl9s
aW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKLSAgICAiIiJMb2dzIGFuIGVycm9yIGlmIHdlIHNl
ZSAvKiAuLi4gKi8gb3IgIi4uLiIgdGhhdCBleHRlbmQgcGFzdCBvbmUgbGluZS4KLQotICAgIC8q
IC4uLiAqLyBjb21tZW50cyBhcmUgbGVnaXQgaW5zaWRlIG1hY3JvcywgZm9yIG9uZSBsaW5lLgot
ICAgIE90aGVyd2lzZSwgd2UgcHJlZmVyIC8vIGNvbW1lbnRzLCBzbyBpdCdzIG9rIHRvIHdhcm4g
YWJvdXQgdGhlCi0gICAgb3RoZXIuICBMaWtld2lzZSwgaXQncyBvayBmb3Igc3RyaW5ncyB0byBl
eHRlbmQgYWNyb3NzIG11bHRpcGxlCi0gICAgbGluZXMsIGFzIGxvbmcgYXMgYSBsaW5lIGNvbnRp
bnVhdGlvbiBjaGFyYWN0ZXIgKGJhY2tzbGFzaCkKLSAgICB0ZXJtaW5hdGVzIGVhY2ggbGluZS4g
QWx0aG91Z2ggbm90IGN1cnJlbnRseSBwcm9oaWJpdGVkIGJ5IHRoZSBDKysKLSAgICBzdHlsZSBn
dWlkZSwgaXQncyB1Z2x5IGFuZCB1bm5lY2Vzc2FyeS4gV2UgZG9uJ3QgZG8gd2VsbCB3aXRoIGVp
dGhlcgotICAgIGluIHRoaXMgbGludCBwcm9ncmFtLCBzbyB3ZSB3YXJuIGFib3V0IGJvdGguCi0K
LSAgICBBcmdzOgotICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBj
b250YWluaW5nIHRoZSBmaWxlLgotICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhl
IGxpbmUgdG8gY2hlY2suCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBh
bnkgZXJyb3JzIGZvdW5kLgotICAgICIiIgotICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRb
bGluZV9udW1iZXJdCi0KLSAgICAjIFJlbW92ZSBhbGwgXFwgKGVzY2FwZWQgYmFja3NsYXNoZXMp
IGZyb20gdGhlIGxpbmUuIFRoZXkgYXJlIE9LLCBhbmQgdGhlCi0gICAgIyBzZWNvbmQgKGVzY2Fw
ZWQpIHNsYXNoIG1heSB0cmlnZ2VyIGxhdGVyIFwiIGRldGVjdGlvbiBlcnJvbmVvdXNseS4KLSAg
ICBsaW5lID0gbGluZS5yZXBsYWNlKCdcXFxcJywgJycpCi0KLSAgICBpZiBsaW5lLmNvdW50KCcv
KicpID4gbGluZS5jb3VudCgnKi8nKToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdyZWFk
YWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudCcsIDUsCi0gICAgICAgICAgICAgICdDb21wbGV4IG11
bHRpLWxpbmUgLyouLi4qLy1zdHlsZSBjb21tZW50IGZvdW5kLiAnCi0gICAgICAgICAgICAgICdM
aW50IG1heSBnaXZlIGJvZ3VzIHdhcm5pbmdzLiAgJwotICAgICAgICAgICAgICAnQ29uc2lkZXIg
cmVwbGFjaW5nIHRoZXNlIHdpdGggLy8tc3R5bGUgY29tbWVudHMsICcKLSAgICAgICAgICAgICAg
J3dpdGggI2lmIDAuLi4jZW5kaWYsICcKLSAgICAgICAgICAgICAgJ29yIHdpdGggbW9yZSBjbGVh
cmx5IHN0cnVjdHVyZWQgbXVsdGktbGluZSBjb21tZW50cy4nKQotCi0gICAgaWYgKGxpbmUuY291
bnQoJyInKSAtIGxpbmUuY291bnQoJ1xcIicpKSAlIDI6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVt
YmVyLCAncmVhZGFiaWxpdHkvbXVsdGlsaW5lX3N0cmluZycsIDUsCi0gICAgICAgICAgICAgICdN
dWx0aS1saW5lIHN0cmluZyAoIi4uLiIpIGZvdW5kLiAgVGhpcyBsaW50IHNjcmlwdCBkb2Vzblwn
dCAnCi0gICAgICAgICAgICAgICdkbyB3ZWxsIHdpdGggc3VjaCBzdHJpbmdzLCBhbmQgbWF5IGdp
dmUgYm9ndXMgd2FybmluZ3MuICBUaGV5XCdyZSAnCi0gICAgICAgICAgICAgICd1Z2x5IGFuZCB1
bm5lY2Vzc2FyeSwgYW5kIHlvdSBzaG91bGQgdXNlIGNvbmNhdGVuYXRpb24gaW5zdGVhZCIuJykK
LQotCi1fVEhSRUFESU5HX0xJU1QgPSAoCi0gICAgKCdhc2N0aW1lKCcsICdhc2N0aW1lX3IoJyks
Ci0gICAgKCdjdGltZSgnLCAnY3RpbWVfcignKSwKLSAgICAoJ2dldGdyZ2lkKCcsICdnZXRncmdp
ZF9yKCcpLAotICAgICgnZ2V0Z3JuYW0oJywgJ2dldGdybmFtX3IoJyksCi0gICAgKCdnZXRsb2dp
bignLCAnZ2V0bG9naW5fcignKSwKLSAgICAoJ2dldHB3bmFtKCcsICdnZXRwd25hbV9yKCcpLAot
ICAgICgnZ2V0cHd1aWQoJywgJ2dldHB3dWlkX3IoJyksCi0gICAgKCdnbXRpbWUoJywgJ2dtdGlt
ZV9yKCcpLAotICAgICgnbG9jYWx0aW1lKCcsICdsb2NhbHRpbWVfcignKSwKLSAgICAoJ3JhbmQo
JywgJ3JhbmRfcignKSwKLSAgICAoJ3JlYWRkaXIoJywgJ3JlYWRkaXJfcignKSwKLSAgICAoJ3N0
cnRvaygnLCAnc3RydG9rX3IoJyksCi0gICAgKCd0dHluYW1lKCcsICd0dHluYW1lX3IoJyksCi0g
ICAgKQotCi0KLWRlZiBjaGVja19wb3NpeF90aHJlYWRpbmcoY2xlYW5fbGluZXMsIGxpbmVfbnVt
YmVyLCBlcnJvcik6Ci0gICAgIiIiQ2hlY2tzIGZvciBjYWxscyB0byB0aHJlYWQtdW5zYWZlIGZ1
bmN0aW9ucy4KLQotICAgIE11Y2ggY29kZSBoYXMgYmVlbiBvcmlnaW5hbGx5IHdyaXR0ZW4gd2l0
aG91dCBjb25zaWRlcmF0aW9uIG9mCi0gICAgbXVsdGktdGhyZWFkaW5nLiBBbHNvLCBlbmdpbmVl
cnMgYXJlIHJlbHlpbmcgb24gdGhlaXIgb2xkIGV4cGVyaWVuY2U7Ci0gICAgdGhleSBoYXZlIGxl
YXJuZWQgcG9zaXggYmVmb3JlIHRocmVhZGluZyBleHRlbnNpb25zIHdlcmUgYWRkZWQuIFRoZXNl
Ci0gICAgdGVzdHMgZ3VpZGUgdGhlIGVuZ2luZWVycyB0byB1c2UgdGhyZWFkLXNhZmUgZnVuY3Rp
b25zICh3aGVuIHVzaW5nCi0gICAgcG9zaXggZGlyZWN0bHkpLgotCi0gICAgQXJnczoKLSAgICAg
IGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmls
ZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgot
ICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4K
LSAgICAiIiIKLSAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXQotICAg
IGZvciBzaW5nbGVfdGhyZWFkX2Z1bmN0aW9uLCBtdWx0aXRocmVhZF9zYWZlX2Z1bmN0aW9uIGlu
IF9USFJFQURJTkdfTElTVDoKLSAgICAgICAgaW5kZXggPSBsaW5lLmZpbmQoc2luZ2xlX3RocmVh
ZF9mdW5jdGlvbikKLSAgICAgICAgIyBDb21wYXJpc29ucyBtYWRlIGV4cGxpY2l0IGZvciBjbGFy
aXR5IC0tIHB5bGludDogZGlzYWJsZS1tc2c9QzY0MDMKLSAgICAgICAgaWYgaW5kZXggPj0gMCBh
bmQgKGluZGV4ID09IDAgb3IgKG5vdCBsaW5lW2luZGV4IC0gMV0uaXNhbG51bSgpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGluZVtpbmRleCAtIDFdIG5v
dCBpbiAoJ18nLCAnLicsICc+JykpKToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAn
cnVudGltZS90aHJlYWRzYWZlX2ZuJywgMiwKLSAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1
c2luZyAnICsgbXVsdGl0aHJlYWRfc2FmZV9mdW5jdGlvbiArCi0gICAgICAgICAgICAgICAgICAn
Li4uKSBpbnN0ZWFkIG9mICcgKyBzaW5nbGVfdGhyZWFkX2Z1bmN0aW9uICsKLSAgICAgICAgICAg
ICAgICAgICcuLi4pIGZvciBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5LicpCi0KLQotIyBNYXRjaGVz
IGludmFsaWQgaW5jcmVtZW50OiAqY291bnQrKywgd2hpY2ggbW92ZXMgcG9pbnRlciBpbnN0ZWFk
IG9mCi0jIGluY3JlbWVudGluZyBhIHZhbHVlLgotX1JFX1BBVFRFUk5fSU5WQUxJRF9JTkNSRU1F
TlQgPSByZS5jb21waWxlKAotICAgIHInXlxzKlwqXHcrKFwrXCt8LS0pOycpCi0KLQotZGVmIGNo
ZWNrX2ludmFsaWRfaW5jcmVtZW50KGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgot
ICAgICIiIkNoZWNrcyBmb3IgaW52YWxpZCBpbmNyZW1lbnQgKmNvdW50KysuCi0KLSAgICBGb3Ig
ZXhhbXBsZSBmb2xsb3dpbmcgZnVuY3Rpb246Ci0gICAgdm9pZCBpbmNyZW1lbnRfY291bnRlcihp
bnQqIGNvdW50KSB7Ci0gICAgICAgICpjb3VudCsrOwotICAgIH0KLSAgICBpcyBpbnZhbGlkLCBi
ZWNhdXNlIGl0IGVmZmVjdGl2ZWx5IGRvZXMgY291bnQrKywgbW92aW5nIHBvaW50ZXIsIGFuZCBz
aG91bGQKLSAgICBiZSByZXBsYWNlZCB3aXRoICsrKmNvdW50LCAoKmNvdW50KSsrIG9yICpjb3Vu
dCArPSAxLgotCi0gICAgQXJnczoKLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMg
aW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVt
YmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBj
YWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLSAgICBsaW5lID0gY2xlYW5fbGlu
ZXMuZWxpZGVkW2xpbmVfbnVtYmVyXQotICAgIGlmIF9SRV9QQVRURVJOX0lOVkFMSURfSU5DUkVN
RU5ULm1hdGNoKGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvaW52
YWxpZF9pbmNyZW1lbnQnLCA1LAotICAgICAgICAgICAgICAnQ2hhbmdpbmcgcG9pbnRlciBpbnN0
ZWFkIG9mIHZhbHVlIChvciB1bnVzZWQgdmFsdWUgb2Ygb3BlcmF0b3IqKS4nKQotCi0KLWNsYXNz
IF9DbGFzc0luZm8ob2JqZWN0KToKLSAgICAiIiJTdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgYSBj
bGFzcy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBsaW5lX251bWJlcik6Ci0g
ICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5saW5lX251bWJlciA9IGxpbmVf
bnVtYmVyCi0gICAgICAgIHNlbGYuc2Vlbl9vcGVuX2JyYWNlID0gRmFsc2UKLSAgICAgICAgc2Vs
Zi5pc19kZXJpdmVkID0gRmFsc2UKLSAgICAgICAgc2VsZi52aXJ0dWFsX21ldGhvZF9saW5lX251
bWJlciA9IE5vbmUKLSAgICAgICAgc2VsZi5oYXNfdmlydHVhbF9kZXN0cnVjdG9yID0gRmFsc2UK
LSAgICAgICAgc2VsZi5icmFjZV9kZXB0aCA9IDAKLQotCi1jbGFzcyBfQ2xhc3NTdGF0ZShvYmpl
Y3QpOgotICAgICIiIkhvbGRzIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBwYXJzZSByZWxhdGlu
ZyB0byBjbGFzcyBkZWNsYXJhdGlvbnMuCi0KLSAgICBJdCBtYWludGFpbnMgYSBzdGFjayBvZiBf
Q2xhc3NJbmZvcyByZXByZXNlbnRpbmcgdGhlIHBhcnNlcidzIGd1ZXNzCi0gICAgYXMgdG8gdGhl
IGN1cnJlbnQgbmVzdGluZyBvZiBjbGFzcyBkZWNsYXJhdGlvbnMuIFRoZSBpbm5lcm1vc3QgY2xh
c3MKLSAgICBpcyBhdCB0aGUgdG9wIChiYWNrKSBvZiB0aGUgc3RhY2suIFR5cGljYWxseSwgdGhl
IHN0YWNrIHdpbGwgZWl0aGVyCi0gICAgYmUgZW1wdHkgb3IgaGF2ZSBleGFjdGx5IG9uZSBlbnRy
eS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5jbGFz
c2luZm9fc3RhY2sgPSBbXQotCi0gICAgZGVmIGNoZWNrX2ZpbmlzaGVkKHNlbGYsIGVycm9yKToK
LSAgICAgICAgIiIiQ2hlY2tzIHRoYXQgYWxsIGNsYXNzZXMgaGF2ZSBiZWVuIGNvbXBsZXRlbHkg
cGFyc2VkLgotCi0gICAgICAgIENhbGwgdGhpcyB3aGVuIGFsbCBsaW5lcyBpbiBhIGZpbGUgaGF2
ZSBiZWVuIHByb2Nlc3NlZC4KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBlcnJvcjogVGhlIGZ1
bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICAgICAiIiIKLSAgICAg
ICAgaWYgc2VsZi5jbGFzc2luZm9fc3RhY2s6Ci0gICAgICAgICAgICAjIE5vdGU6IFRoaXMgdGVz
dCBjYW4gcmVzdWx0IGluIGZhbHNlIHBvc2l0aXZlcyBpZiAjaWZkZWYgY29uc3RydWN0cwotICAg
ICAgICAgICAgIyBnZXQgaW4gdGhlIHdheSBvZiBicmFjZSBtYXRjaGluZy4gU2VlIHRoZSB0ZXN0
QnVpbGRDbGFzcyB0ZXN0IGluCi0gICAgICAgICAgICAjIGNwcF9zdHlsZV91bml0dGVzdC5weSBm
b3IgYW4gZXhhbXBsZSBvZiB0aGlzLgotICAgICAgICAgICAgZXJyb3Ioc2VsZi5jbGFzc2luZm9f
c3RhY2tbMF0ubGluZV9udW1iZXIsICdidWlsZC9jbGFzcycsIDUsCi0gICAgICAgICAgICAgICAg
ICAnRmFpbGVkIHRvIGZpbmQgY29tcGxldGUgZGVjbGFyYXRpb24gb2YgY2xhc3MgJXMnICUKLSAg
ICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NpbmZvX3N0YWNrWzBdLm5hbWUpCi0KLQotY2xhc3Mg
X0ZpbGVTdGF0ZShvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2Vs
Zi5fZGlkX2luc2lkZV9uYW1lc3BhY2VfaW5kZW50X3dhcm5pbmcgPSBGYWxzZQotCi0gICAgZGVm
IHNldF9kaWRfaW5zaWRlX25hbWVzcGFjZV9pbmRlbnRfd2FybmluZyhzZWxmKToKLSAgICAgICAg
c2VsZi5fZGlkX2luc2lkZV9uYW1lc3BhY2VfaW5kZW50X3dhcm5pbmcgPSBUcnVlCi0KLSAgICBk
ZWYgZGlkX2luc2lkZV9uYW1lc3BhY2VfaW5kZW50X3dhcm5pbmcoc2VsZik6Ci0gICAgICAgIHJl
dHVybiBzZWxmLl9kaWRfaW5zaWRlX25hbWVzcGFjZV9pbmRlbnRfd2FybmluZwotCi1kZWYgY2hl
Y2tfZm9yX25vbl9zdGFuZGFyZF9jb25zdHJ1Y3RzKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nfc3RhdGUsIGVycm9y
KToKLSAgICAiIiJMb2dzIGFuIGVycm9yIGlmIHdlIHNlZSBjZXJ0YWluIG5vbi1BTlNJIGNvbnN0
cnVjdHMgaWdub3JlZCBieSBnY2MtMi4KLQotICAgIENvbXBsYWluIGFib3V0IHNldmVyYWwgY29u
c3RydWN0cyB3aGljaCBnY2MtMiBhY2NlcHRzLCBidXQgd2hpY2ggYXJlCi0gICAgbm90IHN0YW5k
YXJkIEMrKy4gIFdhcm5pbmcgYWJvdXQgdGhlc2UgaW4gbGludCBpcyBvbmUgd2F5IHRvIGVhc2Ug
dGhlCi0gICAgdHJhbnNpdGlvbiB0byBuZXcgY29tcGlsZXJzLgotICAgIC0gcHV0IHN0b3JhZ2Ug
Y2xhc3MgZmlyc3QgKGUuZy4gInN0YXRpYyBjb25zdCIgaW5zdGVhZCBvZiAiY29uc3Qgc3RhdGlj
IikuCi0gICAgLSAiJWxsZCIgaW5zdGVhZCBvZiAlcWQiIGluIHByaW50Zi10eXBlIGZ1bmN0aW9u
cy4KLSAgICAtICIlMSRkIiBpcyBub24tc3RhbmRhcmQgaW4gcHJpbnRmLXR5cGUgZnVuY3Rpb25z
LgotICAgIC0gIlwlIiBpcyBhbiB1bmRlZmluZWQgY2hhcmFjdGVyIGVzY2FwZSBzZXF1ZW5jZS4K
LSAgICAtIHRleHQgYWZ0ZXIgI2VuZGlmIGlzIG5vdCBhbGxvd2VkLgotICAgIC0gaW52YWxpZCBp
bm5lci1zdHlsZSBmb3J3YXJkIGRlY2xhcmF0aW9uLgotICAgIC0gPj8gYW5kIDw/IG9wZXJhdG9y
cywgYW5kIHRoZWlyID4/PSBhbmQgPD89IGNvdXNpbnMuCi0gICAgLSBjbGFzc2VzIHdpdGggdmly
dHVhbCBtZXRob2RzIG5lZWQgdmlydHVhbCBkZXN0cnVjdG9ycyAoY29tcGlsZXIgd2FybmluZwot
ICAgICAgICBhdmFpbGFibGUsIGJ1dCBub3QgdHVybmVkIG9uIHlldC4pCi0KLSAgICBBZGRpdGlv
bmFsbHksIGNoZWNrIGZvciBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIHN0eWxlIHZpb2xhdGlvbnMg
YXMgaXQKLSAgICBpcyB2ZXJ5IGNvbnZlbmllbnQgdG8gZG8gc28gd2hpbGUgY2hlY2tpbmcgZm9y
IGdjYy0yIGNvbXBsaWFuY2UuCi0KLSAgICBBcmdzOgotICAgICAgY2xlYW5fbGluZXM6IEEgQ2xl
YW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgotICAgICAgbGluZV9udW1i
ZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCi0gICAgICBjbGFzc19zdGF0ZTog
QSBfQ2xhc3NTdGF0ZSBpbnN0YW5jZSB3aGljaCBtYWludGFpbnMgaW5mb3JtYXRpb24gYWJvdXQK
LSAgICAgICAgICAgICAgICAgICB0aGUgY3VycmVudCBzdGFjayBvZiBuZXN0ZWQgY2xhc3MgZGVj
bGFyYXRpb25zIGJlaW5nIHBhcnNlZC4KLSAgICAgIGVycm9yOiBBIGNhbGxhYmxlIHRvIHdoaWNo
IGVycm9ycyBhcmUgcmVwb3J0ZWQsIHdoaWNoIHRha2VzIHBhcmFtZXRlcnM6Ci0gICAgICAgICAg
ICAgbGluZSBudW1iZXIsIGVycm9yIGxldmVsLCBhbmQgbWVzc2FnZQotICAgICIiIgotCi0gICAg
IyBSZW1vdmUgY29tbWVudHMgZnJvbSB0aGUgbGluZSwgYnV0IGxlYXZlIGluIHN0cmluZ3MgZm9y
IG5vdy4KLSAgICBsaW5lID0gY2xlYW5fbGluZXMubGluZXNbbGluZV9udW1iZXJdCi0KLSAgICBp
ZiBzZWFyY2gocidwcmludGZccypcKC4qIi4qJVstKyBdP1xkKnEnLCBsaW5lKToKLSAgICAgICAg
ZXJyb3IobGluZV9udW1iZXIsICdydW50aW1lL3ByaW50Zl9mb3JtYXQnLCAzLAotICAgICAgICAg
ICAgICAnJXEgaW4gZm9ybWF0IHN0cmluZ3MgaXMgZGVwcmVjYXRlZC4gIFVzZSAlbGwgaW5zdGVh
ZC4nKQotCi0gICAgaWYgc2VhcmNoKHIncHJpbnRmXHMqXCguKiIuKiVcZCtcJCcsIGxpbmUpOgot
ICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvcHJpbnRmX2Zvcm1hdCcsIDIsCi0g
ICAgICAgICAgICAgICclTiQgZm9ybWF0cyBhcmUgdW5jb252ZW50aW9uYWwuICBUcnkgcmV3cml0
aW5nIHRvIGF2b2lkIHRoZW0uJykKLQotICAgICMgUmVtb3ZlIGVzY2FwZWQgYmFja3NsYXNoZXMg
YmVmb3JlIGxvb2tpbmcgZm9yIHVuZGVmaW5lZCBlc2NhcGVzLgotICAgIGxpbmUgPSBsaW5lLnJl
cGxhY2UoJ1xcXFwnLCAnJykKLQotICAgIGlmIHNlYXJjaChyJygifFwnKS4qXFwoJXxcW3xcKHx7
KScsIGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL3ByaW50Zl9mb3Jt
YXQnLCAzLAotICAgICAgICAgICAgICAnJSwgWywgKCwgYW5kIHsgYXJlIHVuZGVmaW5lZCBjaGFy
YWN0ZXIgZXNjYXBlcy4gIFVuZXNjYXBlIHRoZW0uJykKLQotICAgICMgRm9yIHRoZSByZXN0LCB3
b3JrIHdpdGggYm90aCBjb21tZW50cyBhbmQgc3RyaW5ncyByZW1vdmVkLgotICAgIGxpbmUgPSBj
bGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCi0KLSAgICBpZiBzZWFyY2gocidcYihjb25z
dHx2b2xhdGlsZXx2b2lkfGNoYXJ8c2hvcnR8aW50fGxvbmcnCi0gICAgICAgICAgICAgIHInfGZs
b2F0fGRvdWJsZXxzaWduZWR8dW5zaWduZWQnCi0gICAgICAgICAgICAgIHInfHNjaGFyfHU/aW50
OHx1P2ludDE2fHU/aW50MzJ8dT9pbnQ2NCknCi0gICAgICAgICAgICAgIHInXHMrKGF1dG98cmVn
aXN0ZXJ8c3RhdGljfGV4dGVybnx0eXBlZGVmKVxiJywKLSAgICAgICAgICAgICAgbGluZSk6Ci0g
ICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvc3RvcmFnZV9jbGFzcycsIDUsCi0gICAg
ICAgICAgICAgICdTdG9yYWdlIGNsYXNzIChzdGF0aWMsIGV4dGVybiwgdHlwZWRlZiwgZXRjKSBz
aG91bGQgYmUgZmlyc3QuJykKLQotICAgIGlmIG1hdGNoKHInXHMqI1xzKmVuZGlmXHMqW14vXHNd
KycsIGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL2VuZGlmX2NvbW1l
bnQnLCA1LAotICAgICAgICAgICAgICAnVW5jb21tZW50ZWQgdGV4dCBhZnRlciAjZW5kaWYgaXMg
bm9uLXN0YW5kYXJkLiAgVXNlIGEgY29tbWVudC4nKQotCi0gICAgaWYgbWF0Y2gocidccypjbGFz
c1xzKyhcdytccyo6OlxzKikrXHcrXHMqOycsIGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251
bWJlciwgJ2J1aWxkL2ZvcndhcmRfZGVjbCcsIDUsCi0gICAgICAgICAgICAgICdJbm5lci1zdHls
ZSBmb3J3YXJkIGRlY2xhcmF0aW9ucyBhcmUgaW52YWxpZC4gIFJlbW92ZSB0aGlzIGxpbmUuJykK
LQotICAgIGlmIHNlYXJjaChyJyhcdyt8WystXT9cZCsoXC5cZCopPylccyooPHw+KVw/PT9ccyoo
XHcrfFsrLV0/XGQrKShcLlxkKik/JywgbGluZSk6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVy
LCAnYnVpbGQvZGVwcmVjYXRlZCcsIDMsCi0gICAgICAgICAgICAgICc+PyBhbmQgPD8gKG1heCBh
bmQgbWluKSBvcGVyYXRvcnMgYXJlIG5vbi1zdGFuZGFyZCBhbmQgZGVwcmVjYXRlZC4nKQotCi0g
ICAgIyBUcmFjayBjbGFzcyBlbnRyeSBhbmQgZXhpdCwgYW5kIGF0dGVtcHQgdG8gZmluZCBjYXNl
cyB3aXRoaW4gdGhlCi0gICAgIyBjbGFzcyBkZWNsYXJhdGlvbiB0aGF0IGRvbid0IG1lZXQgdGhl
IEMrKyBzdHlsZQotICAgICMgZ3VpZGVsaW5lcy4gVHJhY2tpbmcgaXMgdmVyeSBkZXBlbmRlbnQg
b24gdGhlIGNvZGUgbWF0Y2hpbmcgR29vZ2xlCi0gICAgIyBzdHlsZSBndWlkZWxpbmVzLCBidXQg
aXQgc2VlbXMgdG8gcGVyZm9ybSB3ZWxsIGVub3VnaCBpbiB0ZXN0aW5nCi0gICAgIyB0byBiZSBh
IHdvcnRod2hpbGUgYWRkaXRpb24gdG8gdGhlIGNoZWNrcy4KLSAgICBjbGFzc2luZm9fc3RhY2sg
PSBjbGFzc19zdGF0ZS5jbGFzc2luZm9fc3RhY2sKLSAgICAjIExvb2sgZm9yIGEgY2xhc3MgZGVj
bGFyYXRpb24KLSAgICBjbGFzc19kZWNsX21hdGNoID0gbWF0Y2goCi0gICAgICAgIHInXHMqKHRl
bXBsYXRlXHMqPFtcd1xzPD4sOl0qPlxzKik/KGNsYXNzfHN0cnVjdClccysoXHcrKDo6XHcrKSop
JywgbGluZSkKLSAgICBpZiBjbGFzc19kZWNsX21hdGNoOgotICAgICAgICBjbGFzc2luZm9fc3Rh
Y2suYXBwZW5kKF9DbGFzc0luZm8oY2xhc3NfZGVjbF9tYXRjaC5ncm91cCgzKSwgbGluZV9udW1i
ZXIpKQotCi0gICAgIyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhpcyBmdW5jdGlvbiB1c2VzIHRoZSB0
b3Agb2YgdGhlIHN0YWNrIGlmIGl0J3MKLSAgICAjIG5vdCBlbXB0eS4KLSAgICBpZiBub3QgY2xh
c3NpbmZvX3N0YWNrOgotICAgICAgICByZXR1cm4KLQotICAgIGNsYXNzaW5mbyA9IGNsYXNzaW5m
b19zdGFja1stMV0KLQotICAgICMgSWYgdGhlIG9wZW5pbmcgYnJhY2UgaGFzbid0IGJlZW4gc2Vl
biBsb29rIGZvciBpdCBhbmQgYWxzbwotICAgICMgcGFyZW50IGNsYXNzIGRlY2xhcmF0aW9ucy4K
LSAgICBpZiBub3QgY2xhc3NpbmZvLnNlZW5fb3Blbl9icmFjZToKLSAgICAgICAgIyBJZiB0aGUg
bGluZSBoYXMgYSAnOycgaW4gaXQsIGFzc3VtZSBpdCdzIGEgZm9yd2FyZCBkZWNsYXJhdGlvbiBv
cgotICAgICAgICAjIGEgc2luZ2xlLWxpbmUgY2xhc3MgZGVjbGFyYXRpb24sIHdoaWNoIHdlIHdv
bid0IHByb2Nlc3MuCi0gICAgICAgIGlmIGxpbmUuZmluZCgnOycpICE9IC0xOgotICAgICAgICAg
ICAgY2xhc3NpbmZvX3N0YWNrLnBvcCgpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgY2xh
c3NpbmZvLnNlZW5fb3Blbl9icmFjZSA9IChsaW5lLmZpbmQoJ3snKSAhPSAtMSkKLSAgICAgICAg
IyBMb29rIGZvciBhIGJhcmUgJzonCi0gICAgICAgIGlmIHNlYXJjaCgnKF58W146XSk6KCR8W146
XSknLCBsaW5lKToKLSAgICAgICAgICAgIGNsYXNzaW5mby5pc19kZXJpdmVkID0gVHJ1ZQotICAg
ICAgICBpZiBub3QgY2xhc3NpbmZvLnNlZW5fb3Blbl9icmFjZToKLSAgICAgICAgICAgIHJldHVy
biAgIyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhpcyBmdW5jdGlvbiBpcyBmb3IgYWZ0ZXIgb3BlbiBi
cmFjZQotCi0gICAgIyBUaGUgY2xhc3MgbWF5IGhhdmUgYmVlbiBkZWNsYXJlZCB3aXRoIG5hbWVz
cGFjZSBvciBjbGFzc25hbWUgcXVhbGlmaWVycy4KLSAgICAjIFRoZSBjb25zdHJ1Y3RvciBhbmQg
ZGVzdHJ1Y3RvciB3aWxsIG5vdCBoYXZlIHRob3NlIHF1YWxpZmllcnMuCi0gICAgYmFzZV9jbGFz
c25hbWUgPSBjbGFzc2luZm8ubmFtZS5zcGxpdCgnOjonKVstMV0KLQotICAgICMgTG9vayBmb3Ig
c2luZ2xlLWFyZ3VtZW50IGNvbnN0cnVjdG9ycyB0aGF0IGFyZW4ndCBtYXJrZWQgZXhwbGljaXQu
Ci0gICAgIyBUZWNobmljYWxseSBhIHZhbGlkIGNvbnN0cnVjdCwgYnV0IGFnYWluc3Qgc3R5bGUu
Ci0gICAgYXJncyA9IG1hdGNoKHInKD88IWV4cGxpY2l0KVxzKyVzXHMqXCgoW14sKCldKylcKScK
LSAgICAgICAgICAgICAgICAgJSByZS5lc2NhcGUoYmFzZV9jbGFzc25hbWUpLAotICAgICAgICAg
ICAgICAgICBsaW5lKQotICAgIGlmIChhcmdzCi0gICAgICAgIGFuZCBhcmdzLmdyb3VwKDEpICE9
ICd2b2lkJwotICAgICAgICBhbmQgbm90IG1hdGNoKHInKGNvbnN0XHMrKT8lc1xzKiYnICUgcmUu
ZXNjYXBlKGJhc2VfY2xhc3NuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICBhcmdzLmdyb3Vw
KDEpLnN0cmlwKCkpKToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdydW50aW1lL2V4cGxp
Y2l0JywgNSwKLSAgICAgICAgICAgICAgJ1NpbmdsZS1hcmd1bWVudCBjb25zdHJ1Y3RvcnMgc2hv
dWxkIGJlIG1hcmtlZCBleHBsaWNpdC4nKQotCi0gICAgIyBMb29rIGZvciBtZXRob2RzIGRlY2xh
cmVkIHZpcnR1YWwuCi0gICAgaWYgc2VhcmNoKHInXGJ2aXJ0dWFsXGInLCBsaW5lKToKLSAgICAg
ICAgY2xhc3NpbmZvLnZpcnR1YWxfbWV0aG9kX2xpbmVfbnVtYmVyID0gbGluZV9udW1iZXIKLSAg
ICAgICAgIyBPbmx5IGxvb2sgZm9yIGEgZGVzdHJ1Y3RvciBkZWNsYXJhdGlvbiBvbiB0aGUgc2Ft
ZSBsaW5lLiBJdCB3b3VsZAotICAgICAgICAjIGJlIGV4dHJlbWVseSB1bmxpa2VseSBmb3IgdGhl
IGRlc3RydWN0b3IgZGVjbGFyYXRpb24gdG8gb2NjdXB5Ci0gICAgICAgICMgbW9yZSB0aGFuIG9u
ZSBsaW5lLgotICAgICAgICBpZiBzZWFyY2gocid+JXNccypcKCcgJSBiYXNlX2NsYXNzbmFtZSwg
bGluZSk6Ci0gICAgICAgICAgICBjbGFzc2luZm8uaGFzX3ZpcnR1YWxfZGVzdHJ1Y3RvciA9IFRy
dWUKLQotICAgICMgTG9vayBmb3IgY2xhc3MgZW5kLgotICAgIGJyYWNlX2RlcHRoID0gY2xhc3Np
bmZvLmJyYWNlX2RlcHRoCi0gICAgYnJhY2VfZGVwdGggPSBicmFjZV9kZXB0aCArIGxpbmUuY291
bnQoJ3snKSAtIGxpbmUuY291bnQoJ30nKQotICAgIGlmIGJyYWNlX2RlcHRoIDw9IDA6Ci0gICAg
ICAgIGNsYXNzaW5mbyA9IGNsYXNzaW5mb19zdGFjay5wb3AoKQotICAgICAgICAjIFRyeSB0byBk
ZXRlY3QgbWlzc2luZyB2aXJ0dWFsIGRlc3RydWN0b3IgZGVjbGFyYXRpb25zLgotICAgICAgICAj
IEZvciBub3csIG9ubHkgd2FybiBpZiBhIG5vbi1kZXJpdmVkIGNsYXNzIHdpdGggdmlydHVhbCBt
ZXRob2RzIGxhY2tzCi0gICAgICAgICMgYSB2aXJ0dWFsIGRlc3RydWN0b3IuIFRoaXMgaXMgdG8g
bWFrZSBpdCBsZXNzIGxpa2VseSB0aGF0IHBlb3BsZSB3aWxsCi0gICAgICAgICMgZGVjbGFyZSBk
ZXJpdmVkIHZpcnR1YWwgZGVzdHJ1Y3RvcnMgd2l0aG91dCBkZWNsYXJpbmcgdGhlIGJhc2UKLSAg
ICAgICAgIyBkZXN0cnVjdG9yIHZpcnR1YWwuCi0gICAgICAgIGlmICgoY2xhc3NpbmZvLnZpcnR1
YWxfbWV0aG9kX2xpbmVfbnVtYmVyIGlzIG5vdCBOb25lKQotICAgICAgICAgICAgYW5kIChub3Qg
Y2xhc3NpbmZvLmhhc192aXJ0dWFsX2Rlc3RydWN0b3IpCi0gICAgICAgICAgICBhbmQgKG5vdCBj
bGFzc2luZm8uaXNfZGVyaXZlZCkpOiAgIyBPbmx5IHdhcm4gZm9yIGJhc2UgY2xhc3NlcwotICAg
ICAgICAgICAgZXJyb3IoY2xhc3NpbmZvLmxpbmVfbnVtYmVyLCAncnVudGltZS92aXJ0dWFsJywg
NCwKLSAgICAgICAgICAgICAgICAgICdUaGUgY2xhc3MgJXMgcHJvYmFibHkgbmVlZHMgYSB2aXJ0
dWFsIGRlc3RydWN0b3IgZHVlIHRvICcKLSAgICAgICAgICAgICAgICAgICdoYXZpbmcgdmlydHVh
bCBtZXRob2QocyksIG9uZSBkZWNsYXJlZCBhdCBsaW5lICVkLicKLSAgICAgICAgICAgICAgICAg
ICUgKGNsYXNzaW5mby5uYW1lLCBjbGFzc2luZm8udmlydHVhbF9tZXRob2RfbGluZV9udW1iZXIp
KQotICAgIGVsc2U6Ci0gICAgICAgIGNsYXNzaW5mby5icmFjZV9kZXB0aCA9IGJyYWNlX2RlcHRo
Ci0KLQotZGVmIGNoZWNrX3NwYWNpbmdfZm9yX2Z1bmN0aW9uX2NhbGwobGluZSwgbGluZV9udW1i
ZXIsIGVycm9yKToKLSAgICAiIiJDaGVja3MgZm9yIHRoZSBjb3JyZWN0bmVzcyBvZiB2YXJpb3Vz
IHNwYWNpbmcgYXJvdW5kIGZ1bmN0aW9uIGNhbGxzLgotCi0gICAgQXJnczoKLSAgICAgIGxpbmU6
IFRoZSB0ZXh0IG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgbGluZV9udW1iZXI6IFRoZSBu
dW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRv
IGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICIiIgotCi0gICAgIyBTaW5jZSBmdW5j
dGlvbiBjYWxscyBvZnRlbiBvY2N1ciBpbnNpZGUgaWYvZm9yL2ZvcmVhY2gvd2hpbGUvc3dpdGNo
Ci0gICAgIyBleHByZXNzaW9ucyAtIHdoaWNoIGhhdmUgdGhlaXIgb3duLCBtb3JlIGxpYmVyYWwg
Y29udmVudGlvbnMgLSB3ZQotICAgICMgZmlyc3Qgc2VlIGlmIHdlIHNob3VsZCBiZSBsb29raW5n
IGluc2lkZSBzdWNoIGFuIGV4cHJlc3Npb24gZm9yIGEKLSAgICAjIGZ1bmN0aW9uIGNhbGwsIHRv
IHdoaWNoIHdlIGNhbiBhcHBseSBtb3JlIHN0cmljdCBzdGFuZGFyZHMuCi0gICAgZnVuY3Rpb25f
Y2FsbCA9IGxpbmUgICAgIyBpZiB0aGVyZSdzIG5vIGNvbnRyb2wgZmxvdyBjb25zdHJ1Y3QsIGxv
b2sgYXQgd2hvbGUgbGluZQotICAgIGZvciBwYXR0ZXJuIGluIChyJ1xiaWZccypcKCguKilcKVxz
KnsnLAotICAgICAgICAgICAgICAgICAgICByJ1xiZm9yXHMqXCgoLiopXClccyp7JywKLSAgICAg
ICAgICAgICAgICAgICAgcidcYmZvcmVhY2hccypcKCguKilcKVxzKnsnLAotICAgICAgICAgICAg
ICAgICAgICByJ1xid2hpbGVccypcKCguKilcKVxzKlt7O10nLAotICAgICAgICAgICAgICAgICAg
ICByJ1xic3dpdGNoXHMqXCgoLiopXClccyp7Jyk6Ci0gICAgICAgIG1hdGNoZWQgPSBzZWFyY2go
cGF0dGVybiwgbGluZSkKLSAgICAgICAgaWYgbWF0Y2hlZDoKLSAgICAgICAgICAgIGZ1bmN0aW9u
X2NhbGwgPSBtYXRjaGVkLmdyb3VwKDEpICAgICMgbG9vayBpbnNpZGUgdGhlIHBhcmVucyBmb3Ig
ZnVuY3Rpb24gY2FsbHMKLSAgICAgICAgICAgIGJyZWFrCi0KLSAgICAjIEV4Y2VwdCBpbiBpZi9m
b3IvZm9yZWFjaC93aGlsZS9zd2l0Y2gsIHRoZXJlIHNob3VsZCBuZXZlciBiZSBzcGFjZQotICAg
ICMgaW1tZWRpYXRlbHkgaW5zaWRlIHBhcmVucyAoZWcgImYoIDMsIDQgKSIpLiAgV2UgbWFrZSBh
biBleGNlcHRpb24KLSAgICAjIGZvciBuZXN0ZWQgcGFyZW5zICggKGErYikgKyBjICkuICBMaWtl
d2lzZSwgdGhlcmUgc2hvdWxkIG5ldmVyIGJlCi0gICAgIyBhIHNwYWNlIGJlZm9yZSBhICggd2hl
biBpdCdzIGEgZnVuY3Rpb24gYXJndW1lbnQuICBJIGFzc3VtZSBpdCdzIGEKLSAgICAjIGZ1bmN0
aW9uIGFyZ3VtZW50IHdoZW4gdGhlIGNoYXIgYmVmb3JlIHRoZSB3aGl0ZXNwYWNlIGlzIGxlZ2Fs
IGluCi0gICAgIyBhIGZ1bmN0aW9uIG5hbWUgKGFsbnVtICsgXykgYW5kIHdlJ3JlIG5vdCBzdGFy
dGluZyBhIG1hY3JvLiBBbHNvIGlnbm9yZQotICAgICMgcG9pbnRlcnMgYW5kIHJlZmVyZW5jZXMg
dG8gYXJyYXlzIGFuZCBmdW5jdGlvbnMgY296IHRoZXkncmUgdG9vIHRyaWNreToKLSAgICAjIHdl
IHVzZSBhIHZlcnkgc2ltcGxlIHdheSB0byByZWNvZ25pemUgdGhlc2U6Ci0gICAgIyAiIChzb21l
dGhpbmcpKG1heWJlLXNvbWV0aGluZykiIG9yCi0gICAgIyAiIChzb21ldGhpbmcpKG1heWJlLXNv
bWV0aGluZywiIG9yCi0gICAgIyAiIChzb21ldGhpbmcpW3NvbWV0aGluZ10iCi0gICAgIyBOb3Rl
IHRoYXQgd2UgYXNzdW1lIHRoZSBjb250ZW50cyBvZiBbXSB0byBiZSBzaG9ydCBlbm91Z2ggdGhh
dAotICAgICMgdGhleSdsbCBuZXZlciBuZWVkIHRvIHdyYXAuCi0gICAgaWYgKCAgIyBJZ25vcmUg
Y29udHJvbCBzdHJ1Y3R1cmVzLgotICAgICAgICBub3Qgc2VhcmNoKHInXGIoaWZ8Zm9yfGZvcmVh
Y2h8d2hpbGV8c3dpdGNofHJldHVybnxuZXd8ZGVsZXRlKVxiJywgZnVuY3Rpb25fY2FsbCkKLSAg
ICAgICAgIyBJZ25vcmUgcG9pbnRlcnMvcmVmZXJlbmNlcyB0byBmdW5jdGlvbnMuCi0gICAgICAg
IGFuZCBub3Qgc2VhcmNoKHInIFwoW14pXStcKVwoW14pXSooXCl8LCQpJywgZnVuY3Rpb25fY2Fs
bCkKLSAgICAgICAgIyBJZ25vcmUgcG9pbnRlcnMvcmVmZXJlbmNlcyB0byBhcnJheXMuCi0gICAg
ICAgIGFuZCBub3Qgc2VhcmNoKHInIFwoW14pXStcKVxbW15cXV0rXF0nLCBmdW5jdGlvbl9jYWxs
KSk6Ci0gICAgICAgIGlmIHNlYXJjaChyJ1x3XHMqXChbIFx0XSg/IVxzKlxcJCknLCBmdW5jdGlv
bl9jYWxsKTogICAgICAjIGEgKCB1c2VkIGZvciBhIGZuIGNhbGwKLSAgICAgICAgICAgIGVycm9y
KGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJlbnMnLCA0LAotICAgICAgICAgICAgICAgICAg
J0V4dHJhIHNwYWNlIGFmdGVyICggaW4gZnVuY3Rpb24gY2FsbCcpCi0gICAgICAgIGVsaWYgc2Vh
cmNoKHInXChbIFx0XSsoPyEoXHMqXFwpfFwoKScsIGZ1bmN0aW9uX2NhbGwpOgotICAgICAgICAg
ICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVucycsIDIsCi0gICAgICAgICAg
ICAgICAgICAnRXh0cmEgc3BhY2UgYWZ0ZXIgKCcpCi0gICAgICAgIGlmIChzZWFyY2gocidcd1xz
K1woJywgZnVuY3Rpb25fY2FsbCkKLSAgICAgICAgICAgIGFuZCBub3Qgc2VhcmNoKHInI1xzKmRl
ZmluZXx0eXBlZGVmJywgZnVuY3Rpb25fY2FsbCkpOgotICAgICAgICAgICAgZXJyb3IobGluZV9u
dW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVucycsIDQsCi0gICAgICAgICAgICAgICAgICAnRXh0cmEg
c3BhY2UgYmVmb3JlICggaW4gZnVuY3Rpb24gY2FsbCcpCi0gICAgICAgICMgSWYgdGhlICkgaXMg
Zm9sbG93ZWQgb25seSBieSBhIG5ld2xpbmUgb3IgYSB7ICsgbmV3bGluZSwgYXNzdW1lIGl0J3MK
LSAgICAgICAgIyBwYXJ0IG9mIGEgY29udHJvbCBzdGF0ZW1lbnQgKGlmL3doaWxlL2V0YyksIGFu
ZCBkb24ndCBjb21wbGFpbgotICAgICAgICBpZiBzZWFyY2gocidbXilcc11ccytcKSg/IVxzKiR8
e1xzKiQpJywgZnVuY3Rpb25fY2FsbCk6Ci0gICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwg
J3doaXRlc3BhY2UvcGFyZW5zJywgMiwKLSAgICAgICAgICAgICAgICAgICdFeHRyYSBzcGFjZSBi
ZWZvcmUgKScpCi0KLQotZGVmIGlzX2JsYW5rX2xpbmUobGluZSk6Ci0gICAgIiIiUmV0dXJucyB0
cnVlIGlmIHRoZSBnaXZlbiBsaW5lIGlzIGJsYW5rLgotCi0gICAgV2UgY29uc2lkZXIgYSBsaW5l
IHRvIGJlIGJsYW5rIGlmIHRoZSBsaW5lIGlzIGVtcHR5IG9yIGNvbnNpc3RzIG9mCi0gICAgb25s
eSB3aGl0ZSBzcGFjZXMuCi0KLSAgICBBcmdzOgotICAgICAgbGluZTogQSBsaW5lIG9mIGEgc3Ry
aW5nLgotCi0gICAgUmV0dXJuczoKLSAgICAgIFRydWUsIGlmIHRoZSBnaXZlbiBsaW5lIGlzIGJs
YW5rLgotICAgICIiIgotICAgIHJldHVybiBub3QgbGluZSBvciBsaW5lLmlzc3BhY2UoKQotCi0K
LWRlZiBjaGVja19mb3JfZnVuY3Rpb25fbGVuZ3RocyhjbGVhbl9saW5lcywgbGluZV9udW1iZXIs
IGZ1bmN0aW9uX3N0YXRlLCBlcnJvcik6Ci0gICAgIiIiUmVwb3J0cyBmb3IgbG9uZyBmdW5jdGlv
biBib2RpZXMuCi0KLSAgICBGb3IgYW4gb3ZlcnZpZXcgd2h5IHRoaXMgaXMgZG9uZSwgc2VlOgot
ICAgIGh0dHA6Ly9nb29nbGUtc3R5bGVndWlkZS5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvY3Bw
Z3VpZGUueG1sI1dyaXRlX1Nob3J0X0Z1bmN0aW9ucwotCi0gICAgVXNlcyBhIHNpbXBsaXN0aWMg
YWxnb3JpdGhtIGFzc3VtaW5nIG90aGVyIHN0eWxlIGd1aWRlbGluZXMKLSAgICAoZXNwZWNpYWxs
eSBzcGFjaW5nKSBhcmUgZm9sbG93ZWQuCi0gICAgT25seSBjaGVja3MgdW5pbmRlbnRlZCBmdW5j
dGlvbnMsIHNvIGNsYXNzIG1lbWJlcnMgYXJlIHVuY2hlY2tlZC4KLSAgICBUcml2aWFsIGJvZGll
cyBhcmUgdW5jaGVja2VkLCBzbyBjb25zdHJ1Y3RvcnMgd2l0aCBodWdlIGluaXRpYWxpemVyIGxp
c3RzCi0gICAgbWF5IGJlIG1pc3NlZC4KLSAgICBCbGFuay9jb21tZW50IGxpbmVzIGFyZSBub3Qg
Y291bnRlZCBzbyBhcyB0byBhdm9pZCBlbmNvdXJhZ2luZyB0aGUgcmVtb3ZhbAotICAgIG9mIHZl
cnRpY2FsIHNwYWNlIGFuZCBjb21tbWVudHMganVzdCB0byBnZXQgdGhyb3VnaCBhIGxpbnQgY2hl
Y2suCi0gICAgTk9MSU5UICpvbiB0aGUgbGFzdCBsaW5lIG9mIGEgZnVuY3Rpb24qIGRpc2FibGVz
IHRoaXMgY2hlY2suCi0KLSAgICBBcmdzOgotICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRM
aW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgotICAgICAgbGluZV9udW1iZXI6IFRo
ZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCi0gICAgICBmdW5jdGlvbl9zdGF0ZTogQ3Vy
cmVudCBmdW5jdGlvbiBuYW1lIGFuZCBsaW5lcyBpbiBib2R5IHNvIGZhci4KLSAgICAgIGVycm9y
OiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCi0gICAgIiIiCi0g
ICAgbGluZXMgPSBjbGVhbl9saW5lcy5saW5lcwotICAgIGxpbmUgPSBsaW5lc1tsaW5lX251bWJl
cl0KLSAgICByYXcgPSBjbGVhbl9saW5lcy5yYXdfbGluZXMKLSAgICByYXdfbGluZSA9IHJhd1ts
aW5lX251bWJlcl0KLSAgICBqb2luZWRfbGluZSA9ICcnCi0KLSAgICBzdGFydGluZ19mdW5jID0g
RmFsc2UKLSAgICByZWdleHAgPSByJyhcdyhcd3w6OnxcKnxcJnxccykqKVwoJyAgIyBkZWNscyAq
ICYgc3BhY2U6Om5hbWUoIC4uLgotICAgIG1hdGNoX3Jlc3VsdCA9IG1hdGNoKHJlZ2V4cCwgbGlu
ZSkKLSAgICBpZiBtYXRjaF9yZXN1bHQ6Ci0gICAgICAgICMgSWYgdGhlIG5hbWUgaXMgYWxsIGNh
cHMgYW5kIHVuZGVyc2NvcmVzLCBmaWd1cmUgaXQncyBhIG1hY3JvIGFuZAotICAgICAgICAjIGln
bm9yZSBpdCwgdW5sZXNzIGl0J3MgVEVTVCBvciBURVNUX0YuCi0gICAgICAgIGZ1bmN0aW9uX25h
bWUgPSBtYXRjaF9yZXN1bHQuZ3JvdXAoMSkuc3BsaXQoKVstMV0KLSAgICAgICAgaWYgZnVuY3Rp
b25fbmFtZSA9PSAnVEVTVCcgb3IgZnVuY3Rpb25fbmFtZSA9PSAnVEVTVF9GJyBvciAobm90IG1h
dGNoKHInW0EtWl9dKyQnLCBmdW5jdGlvbl9uYW1lKSk6Ci0gICAgICAgICAgICBzdGFydGluZ19m
dW5jID0gVHJ1ZQotCi0gICAgaWYgc3RhcnRpbmdfZnVuYzoKLSAgICAgICAgYm9keV9mb3VuZCA9
IEZhbHNlCi0gICAgICAgIGZvciBzdGFydF9saW5lX251bWJlciBpbiB4cmFuZ2UobGluZV9udW1i
ZXIsIGNsZWFuX2xpbmVzLm51bV9saW5lcygpKToKLSAgICAgICAgICAgIHN0YXJ0X2xpbmUgPSBs
aW5lc1tzdGFydF9saW5lX251bWJlcl0KLSAgICAgICAgICAgIGpvaW5lZF9saW5lICs9ICcgJyAr
IHN0YXJ0X2xpbmUubHN0cmlwKCkKLSAgICAgICAgICAgIGlmIHNlYXJjaChyJyg7fH0pJywgc3Rh
cnRfbGluZSk6ICAjIERlY2xhcmF0aW9ucyBhbmQgdHJpdmlhbCBmdW5jdGlvbnMKLSAgICAgICAg
ICAgICAgICBib2R5X2ZvdW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgIGJyZWFrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIyAuLi4gaWdub3JlCi0gICAgICAgICAgICBpZiBzZWFyY2go
cid7Jywgc3RhcnRfbGluZSk6Ci0gICAgICAgICAgICAgICAgYm9keV9mb3VuZCA9IFRydWUKLSAg
ICAgICAgICAgICAgICBmdW5jdGlvbiA9IHNlYXJjaChyJygoXHd8OikqKVwoJywgbGluZSkuZ3Jv
dXAoMSkKLSAgICAgICAgICAgICAgICBpZiBtYXRjaChyJ1RFU1QnLCBmdW5jdGlvbik6ICAgICMg
SGFuZGxlIFRFU1QuLi4gbWFjcm9zCi0gICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcl9yZWdl
eHAgPSBzZWFyY2gocicoXCguKlwpKScsIGpvaW5lZF9saW5lKQotICAgICAgICAgICAgICAgICAg
ICBpZiBwYXJhbWV0ZXJfcmVnZXhwOiAgICAgICAgICAgICAjIElnbm9yZSBiYWQgc3ludGF4Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiArPSBwYXJhbWV0ZXJfcmVnZXhwLmdyb3Vw
KDEpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24g
Kz0gJygpJwotICAgICAgICAgICAgICAgIGZ1bmN0aW9uX3N0YXRlLmJlZ2luKGZ1bmN0aW9uKQot
ICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIG5vdCBib2R5X2ZvdW5kOgotICAgICAg
ICAgICAgIyBObyBib2R5IGZvciB0aGUgZnVuY3Rpb24gKG9yIGV2aWRlbmNlIG9mIGEgbm9uLWZ1
bmN0aW9uKSB3YXMgZm91bmQuCi0gICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3JlYWRh
YmlsaXR5L2ZuX3NpemUnLCA1LAotICAgICAgICAgICAgICAgICAgJ0xpbnQgZmFpbGVkIHRvIGZp
bmQgc3RhcnQgb2YgZnVuY3Rpb24gYm9keS4nKQotICAgIGVsaWYgbWF0Y2gocideXH1ccyokJywg
bGluZSk6ICAjIGZ1bmN0aW9uIGVuZAotICAgICAgICBpZiBub3Qgc2VhcmNoKHInXGJOT0xJTlRc
YicsIHJhd19saW5lKToKLSAgICAgICAgICAgIGZ1bmN0aW9uX3N0YXRlLmNoZWNrKGVycm9yLCBs
aW5lX251bWJlcikKLSAgICAgICAgZnVuY3Rpb25fc3RhdGUuZW5kKCkKLSAgICBlbGlmIG5vdCBt
YXRjaChyJ15ccyokJywgbGluZSk6Ci0gICAgICAgIGZ1bmN0aW9uX3N0YXRlLmNvdW50KCkgICMg
Q291bnQgbm9uLWJsYW5rL25vbi1jb21tZW50IGxpbmVzLgotCi0KLWRlZiBjaGVja19zcGFjaW5n
KGZpbGVfZXh0ZW5zaW9uLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKLSAgICAi
IiJDaGVja3MgZm9yIHRoZSBjb3JyZWN0bmVzcyBvZiB2YXJpb3VzIHNwYWNpbmcgaXNzdWVzIGlu
IHRoZSBjb2RlLgotCi0gICAgVGhpbmdzIHdlIGNoZWNrIGZvcjogc3BhY2VzIGFyb3VuZCBvcGVy
YXRvcnMsIHNwYWNlcyBhZnRlcgotICAgIGlmL2Zvci93aGlsZS9zd2l0Y2gsIG5vIHNwYWNlcyBh
cm91bmQgcGFyZW5zIGluIGZ1bmN0aW9uIGNhbGxzLCB0d28KLSAgICBzcGFjZXMgYmV0d2VlbiBj
b2RlIGFuZCBjb21tZW50LCBkb24ndCBzdGFydCBhIGJsb2NrIHdpdGggYSBibGFuawotICAgIGxp
bmUsIGRvbid0IGVuZCBhIGZ1bmN0aW9uIHdpdGggYSBibGFuayBsaW5lLCBkb24ndCBoYXZlIHRv
byBtYW55Ci0gICAgYmxhbmsgbGluZXMgaW4gYSByb3cuCi0KLSAgICBBcmdzOgotICAgICAgZmls
ZV9leHRlbnNpb246IFRoZSBjdXJyZW50IGZpbGUgZXh0ZW5zaW9uLCB3aXRob3V0IHRoZSBsZWFk
aW5nIGRvdC4KLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29u
dGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBs
aW5lIHRvIGNoZWNrLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55
IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLQotICAgIHJhdyA9IGNsZWFuX2xpbmVzLnJhd19saW5l
cwotICAgIGxpbmUgPSByYXdbbGluZV9udW1iZXJdCi0KLSAgICAjIEJlZm9yZSBuaXhpbmcgY29t
bWVudHMsIGNoZWNrIGlmIHRoZSBsaW5lIGlzIGJsYW5rIGZvciBubyBnb29kCi0gICAgIyByZWFz
b24uICBUaGlzIGluY2x1ZGVzIHRoZSBmaXJzdCBsaW5lIGFmdGVyIGEgYmxvY2sgaXMgb3BlbmVk
LCBhbmQKLSAgICAjIGJsYW5rIGxpbmVzIGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiAoaWUsIHJp
Z2h0IGJlZm9yZSBhIGxpbmUgbGlrZSAnfScpLgotICAgIGlmIGlzX2JsYW5rX2xpbmUobGluZSk6
Ci0gICAgICAgIGVsaWRlZCA9IGNsZWFuX2xpbmVzLmVsaWRlZAotICAgICAgICBwcmV2aW91c19s
aW5lID0gZWxpZGVkW2xpbmVfbnVtYmVyIC0gMV0KLSAgICAgICAgcHJldmlvdXNfYnJhY2UgPSBw
cmV2aW91c19saW5lLnJmaW5kKCd7JykKLSAgICAgICAgIyBGSVhNRTogRG9uJ3QgY29tcGxhaW4g
aWYgbGluZSBiZWZvcmUgYmxhbmsgbGluZSwgYW5kIGxpbmUgYWZ0ZXIsCi0gICAgICAgICMgICAg
ICAgIGJvdGggc3RhcnQgd2l0aCBhbG51bXMgYW5kIGFyZSBpbmRlbnRlZCB0aGUgc2FtZSBhbW91
bnQuCi0gICAgICAgICMgICAgICAgIFRoaXMgaWdub3JlcyB3aGl0ZXNwYWNlIGF0IHRoZSBzdGFy
dCBvZiBhIG5hbWVzcGFjZSBibG9jawotICAgICAgICAjICAgICAgICBiZWNhdXNlIHRob3NlIGFy
ZSBub3QgdXN1YWxseSBpbmRlbnRlZC4KLSAgICAgICAgaWYgKHByZXZpb3VzX2JyYWNlICE9IC0x
IGFuZCBwcmV2aW91c19saW5lW3ByZXZpb3VzX2JyYWNlOl0uZmluZCgnfScpID09IC0xCi0gICAg
ICAgICAgICBhbmQgcHJldmlvdXNfbGluZVs6cHJldmlvdXNfYnJhY2VdLmZpbmQoJ25hbWVzcGFj
ZScpID09IC0xKToKLSAgICAgICAgICAgICMgT0ssIHdlIGhhdmUgYSBibGFuayBsaW5lIGF0IHRo
ZSBzdGFydCBvZiBhIGNvZGUgYmxvY2suICBCZWZvcmUgd2UKLSAgICAgICAgICAgICMgY29tcGxh
aW4sIHdlIGNoZWNrIGlmIGl0IGlzIGFuIGV4Y2VwdGlvbiB0byB0aGUgcnVsZTogVGhlIHByZXZp
b3VzCi0gICAgICAgICAgICAjIG5vbi1lbXB0eSBsaW5lIGhhcyB0aGUgcGFyYW1ldGVycyBvZiBh
IGZ1bmN0aW9uIGhlYWRlciB0aGF0IGFyZSBpbmRlbnRlZAotICAgICAgICAgICAgIyA0IHNwYWNl
cyAoYmVjYXVzZSB0aGV5IGRpZCBub3QgZml0IGluIGEgODAgY29sdW1uIGxpbmUgd2hlbiBwbGFj
ZWQgb24KLSAgICAgICAgICAgICMgdGhlIHNhbWUgbGluZSBhcyB0aGUgZnVuY3Rpb24gbmFtZSku
ICBXZSBhbHNvIGNoZWNrIGZvciB0aGUgY2FzZSB3aGVyZQotICAgICAgICAgICAgIyB0aGUgcHJl
dmlvdXMgbGluZSBpcyBpbmRlbnRlZCA2IHNwYWNlcywgd2hpY2ggbWF5IGhhcHBlbiB3aGVuIHRo
ZQotICAgICAgICAgICAgIyBpbml0aWFsaXplcnMgb2YgYSBjb25zdHJ1Y3RvciBkbyBub3QgZml0
IGludG8gYSA4MCBjb2x1bW4gbGluZS4KLSAgICAgICAgICAgIGV4Y2VwdGlvbiA9IEZhbHNlCi0g
ICAgICAgICAgICBpZiBtYXRjaChyJyB7Nn1cdycsIHByZXZpb3VzX2xpbmUpOiAgIyBJbml0aWFs
aXplciBsaXN0PwotICAgICAgICAgICAgICAgICMgV2UgYXJlIGxvb2tpbmcgZm9yIHRoZSBvcGVu
aW5nIGNvbHVtbiBvZiBpbml0aWFsaXplciBsaXN0LCB3aGljaAotICAgICAgICAgICAgICAgICMg
c2hvdWxkIGJlIGluZGVudGVkIDQgc3BhY2VzIHRvIGNhdXNlIDYgc3BhY2UgaW5kZW50YXRpb24g
YWZ0ZXJ3YXJkcy4KLSAgICAgICAgICAgICAgICBzZWFyY2hfcG9zaXRpb24gPSBsaW5lX251bWJl
ciAtIDIKLSAgICAgICAgICAgICAgICB3aGlsZSAoc2VhcmNoX3Bvc2l0aW9uID49IDAKLSAgICAg
ICAgICAgICAgICAgICAgICAgYW5kIG1hdGNoKHInIHs2fVx3JywgZWxpZGVkW3NlYXJjaF9wb3Np
dGlvbl0pKToKLSAgICAgICAgICAgICAgICAgICAgc2VhcmNoX3Bvc2l0aW9uIC09IDEKLSAgICAg
ICAgICAgICAgICBleGNlcHRpb24gPSAoc2VhcmNoX3Bvc2l0aW9uID49IDAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5kIGVsaWRlZFtzZWFyY2hfcG9zaXRpb25dWzo1XSA9PSAnICAg
IDonKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFNlYXJjaCBmb3IgdGhl
IGZ1bmN0aW9uIGFyZ3VtZW50cyBvciBhbiBpbml0aWFsaXplciBsaXN0LiAgV2UgdXNlIGEKLSAg
ICAgICAgICAgICAgICAjIHNpbXBsZSBoZXVyaXN0aWMgaGVyZTogSWYgdGhlIGxpbmUgaXMgaW5k
ZW50ZWQgNCBzcGFjZXM7IGFuZCB3ZSBoYXZlIGEKLSAgICAgICAgICAgICAgICAjIGNsb3Npbmcg
cGFyZW4sIHdpdGhvdXQgdGhlIG9wZW5pbmcgcGFyZW4sIGZvbGxvd2VkIGJ5IGFuIG9wZW5pbmcg
YnJhY2UKLSAgICAgICAgICAgICAgICAjIG9yIGNvbG9uIChmb3IgaW5pdGlhbGl6ZXIgbGlzdHMp
IHdlIGFzc3VtZSB0aGF0IGl0IGlzIHRoZSBsYXN0IGxpbmUgb2YKLSAgICAgICAgICAgICAgICAj
IGEgZnVuY3Rpb24gaGVhZGVyLiAgSWYgd2UgaGF2ZSBhIGNvbG9uIGluZGVudGVkIDQgc3BhY2Vz
LCBpdCBpcyBhbgotICAgICAgICAgICAgICAgICMgaW5pdGlhbGl6ZXIgbGlzdC4KLSAgICAgICAg
ICAgICAgICBleGNlcHRpb24gPSAobWF0Y2gocicgezR9XHdbXlwoXSpcKVxzKihjb25zdFxzKik/
KFx7XHMqJHw6KScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3Vz
X2xpbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIG1hdGNoKHInIHs0fTonLCBw
cmV2aW91c19saW5lKSkKLQotICAgICAgICAgICAgaWYgbm90IGV4Y2VwdGlvbjoKLSAgICAgICAg
ICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvYmxhbmtfbGluZScsIDIsCi0g
ICAgICAgICAgICAgICAgICAgICAgJ0JsYW5rIGxpbmUgYXQgdGhlIHN0YXJ0IG9mIGEgY29kZSBi
bG9jay4gIElzIHRoaXMgbmVlZGVkPycpCi0gICAgICAgICMgVGhpcyBkb2Vzbid0IGlnbm9yZSB3
aGl0ZXNwYWNlIGF0IHRoZSBlbmQgb2YgYSBuYW1lc3BhY2UgYmxvY2sKLSAgICAgICAgIyBiZWNh
dXNlIHRoYXQgaXMgdG9vIGhhcmQgd2l0aG91dCBwYWlyaW5nIG9wZW4vY2xvc2UgYnJhY2VzOwot
ICAgICAgICAjIGhvd2V2ZXIsIGEgc3BlY2lhbCBleGNlcHRpb24gaXMgbWFkZSBmb3IgbmFtZXNw
YWNlIGNsb3NpbmcKLSAgICAgICAgIyBicmFja2V0cyB3aGljaCBoYXZlIGEgY29tbWVudCBjb250
YWluaW5nICJuYW1lc3BhY2UiLgotICAgICAgICAjCi0gICAgICAgICMgQWxzbywgaWdub3JlIGJs
YW5rIGxpbmVzIGF0IHRoZSBlbmQgb2YgYSBibG9jayBpbiBhIGxvbmcgaWYtZWxzZQotICAgICAg
ICAjIGNoYWluLCBsaWtlIHRoaXM6Ci0gICAgICAgICMgICBpZiAoY29uZGl0aW9uMSkgewotICAg
ICAgICAjICAgICAvLyBTb21ldGhpbmcgZm9sbG93ZWQgYnkgYSBibGFuayBsaW5lCi0gICAgICAg
ICMKLSAgICAgICAgIyAgIH0gZWxzZSBpZiAoY29uZGl0aW9uMikgewotICAgICAgICAjICAgICAv
LyBTb21ldGhpbmcgZWxzZQotICAgICAgICAjICAgfQotICAgICAgICBpZiBsaW5lX251bWJlciAr
IDEgPCBjbGVhbl9saW5lcy5udW1fbGluZXMoKToKLSAgICAgICAgICAgIG5leHRfbGluZSA9IHJh
d1tsaW5lX251bWJlciArIDFdCi0gICAgICAgICAgICBpZiAobmV4dF9saW5lCi0gICAgICAgICAg
ICAgICAgYW5kIG1hdGNoKHInXHMqfScsIG5leHRfbGluZSkKLSAgICAgICAgICAgICAgICBhbmQg
bmV4dF9saW5lLmZpbmQoJ25hbWVzcGFjZScpID09IC0xCi0gICAgICAgICAgICAgICAgYW5kIG5l
eHRfbGluZS5maW5kKCd9IGVsc2UgJykgPT0gLTEpOgotICAgICAgICAgICAgICAgIGVycm9yKGxp
bmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9ibGFua19saW5lJywgMywKLSAgICAgICAgICAgICAgICAg
ICAgICAnQmxhbmsgbGluZSBhdCB0aGUgZW5kIG9mIGEgY29kZSBibG9jay4gIElzIHRoaXMgbmVl
ZGVkPycpCi0KLSAgICAjIE5leHQsIHdlIGNvbXBsYWluIGlmIHRoZXJlJ3MgYSBjb21tZW50IHRv
byBuZWFyIHRoZSB0ZXh0Ci0gICAgY29tbWVudF9wb3NpdGlvbiA9IGxpbmUuZmluZCgnLy8nKQot
ICAgIGlmIGNvbW1lbnRfcG9zaXRpb24gIT0gLTE6Ci0gICAgICAgICMgQ2hlY2sgaWYgdGhlIC8v
IG1heSBiZSBpbiBxdW90ZXMuICBJZiBzbywgaWdub3JlIGl0Ci0gICAgICAgICMgQ29tcGFyaXNv
bnMgbWFkZSBleHBsaWNpdCBmb3IgY2xhcml0eSAtLSBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAz
Ci0gICAgICAgIGlmIChsaW5lLmNvdW50KCciJywgMCwgY29tbWVudF9wb3NpdGlvbikgLSBsaW5l
LmNvdW50KCdcXCInLCAwLCBjb21tZW50X3Bvc2l0aW9uKSkgJSAyID09IDA6ICAgIyBub3QgaW4g
cXVvdGVzCi0gICAgICAgICAgICAjIEFsbG93IG9uZSBzcGFjZSBiZWZvcmUgZW5kIG9mIGxpbmUg
Y29tbWVudC4KLSAgICAgICAgICAgIGlmIChub3QgbWF0Y2gocideXHMqJCcsIGxpbmVbOmNvbW1l
bnRfcG9zaXRpb25dKQotICAgICAgICAgICAgICAgIGFuZCAoY29tbWVudF9wb3NpdGlvbiA+PSAx
Ci0gICAgICAgICAgICAgICAgYW5kICgobGluZVtjb21tZW50X3Bvc2l0aW9uIC0gMV0gbm90IGlu
IHN0cmluZy53aGl0ZXNwYWNlKQotICAgICAgICAgICAgICAgICAgICAgb3IgKGNvbW1lbnRfcG9z
aXRpb24gPj0gMgotICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsaW5lW2NvbW1lbnRfcG9z
aXRpb24gLSAyXSBpbiBzdHJpbmcud2hpdGVzcGFjZSkpKSk6Ci0gICAgICAgICAgICAgICAgZXJy
b3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2NvbW1lbnRzJywgNSwKLSAgICAgICAgICAgICAg
ICAgICAgICAnT25lIHNwYWNlIGJlZm9yZSBlbmQgb2YgbGluZSBjb21tZW50cycpCi0gICAgICAg
ICAgICAjIFRoZXJlIHNob3VsZCBhbHdheXMgYmUgYSBzcGFjZSBiZXR3ZWVuIHRoZSAvLyBhbmQg
dGhlIGNvbW1lbnQKLSAgICAgICAgICAgIGNvbW1lbnRlbmQgPSBjb21tZW50X3Bvc2l0aW9uICsg
MgotICAgICAgICAgICAgaWYgY29tbWVudGVuZCA8IGxlbihsaW5lKSBhbmQgbm90IGxpbmVbY29t
bWVudGVuZF0gPT0gJyAnOgotICAgICAgICAgICAgICAgICMgYnV0IHNvbWUgbGluZXMgYXJlIGV4
Y2VwdGlvbnMgLS0gZS5nLiBpZiB0aGV5J3JlIGJpZwotICAgICAgICAgICAgICAgICMgY29tbWVu
dCBkZWxpbWl0ZXJzIGxpa2U6Ci0gICAgICAgICAgICAgICAgIyAvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAg
ICAjIG9yIHRoZXkgYmVnaW4gd2l0aCBtdWx0aXBsZSBzbGFzaGVzIGZvbGxvd2VkIGJ5IGEgc3Bh
Y2U6Ci0gICAgICAgICAgICAgICAgIyAvLy8vLy8vLyBIZWFkZXIgY29tbWVudAotICAgICAgICAg
ICAgICAgIG1hdGNoZWQgPSAoc2VhcmNoKHInWz0vLV17NCx9XHMqJCcsIGxpbmVbY29tbWVudGVu
ZDpdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Igc2VhcmNoKHInXi8rICcsIGxpbmVb
Y29tbWVudGVuZDpdKSkKLSAgICAgICAgICAgICAgICBpZiBub3QgbWF0Y2hlZDoKLSAgICAgICAg
ICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2NvbW1lbnRzJywgNCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Nob3VsZCBoYXZlIGEgc3BhY2UgYmV0d2VlbiAv
LyBhbmQgY29tbWVudCcpCi0KLSAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVt
YmVyXSAgIyBnZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzCi0KLSAgICAjIERvbid0IHRy
eSB0byBkbyBzcGFjaW5nIGNoZWNrcyBmb3Igb3BlcmF0b3IgbWV0aG9kcwotICAgIGxpbmUgPSBz
dWIocidvcGVyYXRvcig9PXwhPXw8fDw8fDw9fD49fD4+fD4pXCgnLCAnb3BlcmF0b3JcKCcsIGxp
bmUpCi0gICAgIyBEb24ndCB0cnkgdG8gZG8gc3BhY2luZyBjaGVja3MgZm9yICNpbmNsdWRlIG9y
ICNpbXBvcnQgc3RhdGVtZW50cyBhdAotICAgICMgbWluaW11bSBiZWNhdXNlIGl0IG1lc3NlcyB1
cCBjaGVja3MgZm9yIHNwYWNpbmcgYXJvdW5kIC8KLSAgICBpZiBtYXRjaChyJ1xzKiNccyooPzpp
bmNsdWRlfGltcG9ydCknLCBsaW5lKToKLSAgICAgICAgcmV0dXJuCi0gICAgaWYgc2VhcmNoKHIn
W1x3Ll09W1x3Ll0nLCBsaW5lKToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNw
YWNlL29wZXJhdG9ycycsIDQsCi0gICAgICAgICAgICAgICdNaXNzaW5nIHNwYWNlcyBhcm91bmQg
PScpCi0KLSAgICAjIEZJWE1FOiBJdCdzIG5vdCBvayB0byBoYXZlIHNwYWNlcyBhcm91bmQgYmlu
YXJ5IG9wZXJhdG9ycyBsaWtlIC4KLQotICAgICMgWW91IHNob3VsZCBhbHdheXMgaGF2ZSB3aGl0
ZXNwYWNlIGFyb3VuZCBiaW5hcnkgb3BlcmF0b3JzLgotICAgICMgQWxhcywgd2UgY2FuJ3QgdGVz
dCA8IG9yID4gYmVjYXVzZSB0aGV5J3JlIGxlZ2l0aW1hdGVseSB1c2VkIHNhbnMgc3BhY2VzCi0g
ICAgIyAoYS0+YiwgdmVjdG9yPGludD4gYSkuICBUaGUgb25seSB0aW1lIHdlIGNhbiB0ZWxsIGlz
IGEgPCB3aXRoIG5vID4sIGFuZAotICAgICMgb25seSBpZiBpdCdzIG5vdCB0ZW1wbGF0ZSBwYXJh
bXMgbGlzdCBzcGlsbGluZyBpbnRvIHRoZSBuZXh0IGxpbmUuCi0gICAgbWF0Y2hlZCA9IHNlYXJj
aChyJ1tePD49IVxzXSg9PXwhPXxcKz18LT18XCo9fC89fC98XHw9fCY9fDw8PXw+Pj18PD18Pj18
XHxcfHxcfHwmJnw+Pnw8PClbXjw+PSFcc10nLCBsaW5lKQotICAgIGlmIG5vdCBtYXRjaGVkOgot
ICAgICAgICAjIE5vdGUgdGhhdCB3aGlsZSBpdCBzZWVtcyB0aGF0IHRoZSAnPFtePF0qJyB0ZXJt
IGluIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgIyByZWdleHAgY291bGQgYmUgc2ltcGxpZmllZCB0
byAnPC4qJywgd2hpY2ggd291bGQgaW5kZWVkIG1hdGNoCi0gICAgICAgICMgdGhlIHNhbWUgY2xh
c3Mgb2Ygc3RyaW5ncywgdGhlIFtePF0gbWVhbnMgdGhhdCBzZWFyY2hpbmcgZm9yIHRoZQotICAg
ICAgICAjIHJlZ2V4cCB0YWtlcyBsaW5lYXIgcmF0aGVyIHRoYW4gcXVhZHJhdGljIHRpbWUuCi0g
ICAgICAgIGlmIG5vdCBzZWFyY2gocic8W148XSosXHMqJCcsIGxpbmUpOiAgIyB0ZW1wbGF0ZSBw
YXJhbXMgc3BpbGwKLSAgICAgICAgICAgIG1hdGNoZWQgPSBzZWFyY2gocidbXjw+PSFcc10oPClb
Xjw+PSFcc10oW14+XXwtPikqJCcsIGxpbmUpCi0gICAgaWYgbWF0Y2hlZDoKLSAgICAgICAgZXJy
b3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL29wZXJhdG9ycycsIDMsCi0gICAgICAgICAgICAg
ICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgJXMnICUgbWF0Y2hlZC5ncm91cCgxKSkKLQotICAgICMg
VGhlcmUgc2hvdWxkbid0IGJlIHNwYWNlIGFyb3VuZCB1bmFyeSBvcGVyYXRvcnMKLSAgICBtYXRj
aGVkID0gc2VhcmNoKHInKCFcc3x+XHN8W1xzXS0tW1xzO118W1xzXVwrXCtbXHM7XSknLCBsaW5l
KQotICAgIGlmIG1hdGNoZWQ6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFj
ZS9vcGVyYXRvcnMnLCA0LAotICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgZm9yIG9wZXJhdG9y
ICVzJyAlIG1hdGNoZWQuZ3JvdXAoMSkpCi0KLSAgICAjIEEgcGV0IHBlZXZlIG9mIG1pbmU6IG5v
IHNwYWNlcyBhZnRlciBhbiBpZiwgd2hpbGUsIHN3aXRjaCwgb3IgZm9yCi0gICAgbWF0Y2hlZCA9
IHNlYXJjaChyJyAoaWZcKHxmb3JcKHxmb3JlYWNoXCh8d2hpbGVcKHxzd2l0Y2hcKCknLCBsaW5l
KQotICAgIGlmIG1hdGNoZWQ6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFj
ZS9wYXJlbnMnLCA1LAotICAgICAgICAgICAgICAnTWlzc2luZyBzcGFjZSBiZWZvcmUgKCBpbiAl
cycgJSBtYXRjaGVkLmdyb3VwKDEpKQotCi0gICAgIyBGb3IgaWYvZm9yL2ZvcmVhY2gvd2hpbGUv
c3dpdGNoLCB0aGUgbGVmdCBhbmQgcmlnaHQgcGFyZW5zIHNob3VsZCBiZQotICAgICMgY29uc2lz
dGVudCBhYm91dCBob3cgbWFueSBzcGFjZXMgYXJlIGluc2lkZSB0aGUgcGFyZW5zLCBhbmQKLSAg
ICAjIHRoZXJlIHNob3VsZCBlaXRoZXIgYmUgemVybyBvciBvbmUgc3BhY2VzIGluc2lkZSB0aGUg
cGFyZW5zLgotICAgICMgV2UgZG9uJ3Qgd2FudDogImlmICggZm9vKSIgb3IgImlmICggZm9vICAg
KSIuCi0gICAgIyBFeGNlcHRpb246ICJmb3IgKCA7IGZvbzsgYmFyKSIgYW5kICJmb3IgKGZvbzsg
YmFyOyApIiBhcmUgYWxsb3dlZC4KLSAgICBtYXRjaGVkID0gc2VhcmNoKHInXGIoP1A8c3RhdGVt
ZW50PmlmfGZvcnxmb3JlYWNofHdoaWxlfHN3aXRjaClccypcKCg/UDxyZW1pbmRlcj4uKikkJywg
bGluZSkKLSAgICBpZiBtYXRjaGVkOgotICAgICAgICBzdGF0ZW1lbnQgPSBtYXRjaGVkLmdyb3Vw
KCdzdGF0ZW1lbnQnKQotICAgICAgICBjb25kaXRpb24sIHJlc3QgPSB1cF90b191bm1hdGNoZWRf
Y2xvc2luZ19wYXJlbihtYXRjaGVkLmdyb3VwKCdyZW1pbmRlcicpKQotICAgICAgICBpZiBjb25k
aXRpb24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBjb25kaXRpb25fbWF0Y2ggPSBzZWFyY2go
cicoP1A8bGVhZGluZz5bIF0qKSg/UDxzZXBhcmF0b3I+LikuKlteIF0rKD9QPHRyYWlsaW5nPlsg
XSopJywgY29uZGl0aW9uKQotICAgICAgICAgICAgaWYgY29uZGl0aW9uX21hdGNoOgotICAgICAg
ICAgICAgICAgIG5fbGVhZGluZyA9IGxlbihjb25kaXRpb25fbWF0Y2guZ3JvdXAoJ2xlYWRpbmcn
KSkKLSAgICAgICAgICAgICAgICBuX3RyYWlsaW5nID0gbGVuKGNvbmRpdGlvbl9tYXRjaC5ncm91
cCgndHJhaWxpbmcnKSkKLSAgICAgICAgICAgICAgICBpZiBuX2xlYWRpbmcgIT0gbl90cmFpbGlu
ZzoKLSAgICAgICAgICAgICAgICAgICAgZm9yX2V4Y2VwdGlvbiA9IHN0YXRlbWVudCA9PSAnZm9y
JyBhbmQgKAotICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbi5zdGFydHN3aXRoKCcg
OycpIGFuZCBuX3RyYWlsaW5nID09IDApIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAoY29u
ZGl0aW9uLmVuZHN3aXRoKCc7ICcpICAgYW5kIG5fbGVhZGluZyA9PSAwKSkKLSAgICAgICAgICAg
ICAgICAgICAgaWYgbm90IGZvcl9leGNlcHRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
cnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvcGFyZW5zJywgNSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdNaXNtYXRjaGluZyBzcGFjZXMgaW5zaWRlICgpIGluICVzJyAlIHN0
YXRlbWVudCkKLSAgICAgICAgICAgICAgICBpZiBuX2xlYWRpbmcgPiAxOgotICAgICAgICAgICAg
ICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvcGFyZW5zJywgNSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ1Nob3VsZCBoYXZlIHplcm8gb3Igb25lIHNwYWNlcyBpbnNp
ZGUgKCBhbmQgKSBpbiAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQp
Ci0KLSAgICAgICAgICAgICMgRG8gbm90IGNoZWNrIGZvciBtb3JlIHRoYW4gb25lIGNvbW1hbmQg
aW4gbWFjcm9zCi0gICAgICAgICAgICBpbl9tYWNybyA9IG1hdGNoKHInXHMqI2RlZmluZScsIGxp
bmUpCi0gICAgICAgICAgICBpZiBub3QgaW5fbWFjcm8gYW5kIG5vdCBtYXRjaChyJygoXHMqe1xz
Kn0/KXwoXHMqOz8pKVxzKlxcPyQnLCByZXN0KToKLSAgICAgICAgICAgICAgICBlcnJvcihsaW5l
X251bWJlciwgJ3doaXRlc3BhY2UvcGFyZW5zJywgNCwKLSAgICAgICAgICAgICAgICAgICAgICAn
TW9yZSB0aGFuIG9uZSBjb21tYW5kIG9uIHRoZSBzYW1lIGxpbmUgaW4gJXMnICUgc3RhdGVtZW50
KQotCi0gICAgIyBZb3Ugc2hvdWxkIGFsd2F5cyBoYXZlIGEgc3BhY2UgYWZ0ZXIgYSBjb21tYSAo
ZWl0aGVyIGFzIGZuIGFyZyBvciBvcGVyYXRvcikKLSAgICBpZiBzZWFyY2gocicsW15cc10nLCBs
aW5lKToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2NvbW1hJywgMywK
LSAgICAgICAgICAgICAgJ01pc3Npbmcgc3BhY2UgYWZ0ZXIgLCcpCi0KLSAgICBpZiBmaWxlX2V4
dGVuc2lvbiA9PSAnY3BwJzoKLSAgICAgICAgIyBDKysgc2hvdWxkIGhhdmUgdGhlICYgb3IgKiBi
ZXNpZGUgdGhlIHR5cGUgbm90IHRoZSB2YXJpYWJsZSBuYW1lLgotICAgICAgICBtYXRjaGVkID0g
bWF0Y2gocidccypcdysoPzwhXGJyZXR1cm58XGJkZWxldGUpXHMrKD9QPHBvaW50ZXJfb3BlcmF0
b3I+XCp8XCYpXHcrJywgbGluZSkKLSAgICAgICAgaWYgbWF0Y2hlZDoKLSAgICAgICAgICAgIGVy
cm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9kZWNsYXJhdGlvbicsIDMsCi0gICAgICAgICAg
ICAgICAgICAnRGVjbGFyYXRpb24gaGFzIHNwYWNlIGJldHdlZW4gdHlwZSBuYW1lIGFuZCAlcyBp
biAlcycgJSAobWF0Y2hlZC5ncm91cCgncG9pbnRlcl9vcGVyYXRvcicpLCBtYXRjaGVkLmdyb3Vw
KDApLnN0cmlwKCkpKQotCi0gICAgZWxpZiBmaWxlX2V4dGVuc2lvbiA9PSAnYyc6Ci0gICAgICAg
ICMgQyBQb2ludGVyIGRlY2xhcmF0aW9uIHNob3VsZCBoYXZlIHRoZSAqIGJlc2lkZSB0aGUgdmFy
aWFibGUgbm90IHRoZSB0eXBlIG5hbWUuCi0gICAgICAgIG1hdGNoZWQgPSBzZWFyY2gocideXHMq
XHcrXCpccytcdysnLCBsaW5lKQotICAgICAgICBpZiBtYXRjaGVkOgotICAgICAgICAgICAgZXJy
b3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2RlY2xhcmF0aW9uJywgMywKLSAgICAgICAgICAg
ICAgICAgICdEZWNsYXJhdGlvbiBoYXMgc3BhY2UgYmV0d2VlbiAqIGFuZCB2YXJpYWJsZSBuYW1l
IGluICVzJyAlIG1hdGNoZWQuZ3JvdXAoMCkuc3RyaXAoKSkKLQotICAgICMgTmV4dCB3ZSB3aWxs
IGxvb2sgZm9yIGlzc3VlcyB3aXRoIGZ1bmN0aW9uIGNhbGxzLgotICAgIGNoZWNrX3NwYWNpbmdf
Zm9yX2Z1bmN0aW9uX2NhbGwobGluZSwgbGluZV9udW1iZXIsIGVycm9yKQotCi0gICAgIyBFeGNl
cHQgYWZ0ZXIgYW4gb3BlbmluZyBwYXJlbiwgeW91IHNob3VsZCBoYXZlIHNwYWNlcyBiZWZvcmUg
eW91ciBicmFjZXMuCi0gICAgIyBBbmQgc2luY2UgeW91IHNob3VsZCBuZXZlciBoYXZlIGJyYWNl
cyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSwgdGhpcyBpcwotICAgICMgYW4gZWFzeSB0ZXN0
LgotICAgIGlmIHNlYXJjaChyJ1teICh7XXsnLCBsaW5lKToKLSAgICAgICAgZXJyb3IobGluZV9u
dW1iZXIsICd3aGl0ZXNwYWNlL2JyYWNlcycsIDUsCi0gICAgICAgICAgICAgICdNaXNzaW5nIHNw
YWNlIGJlZm9yZSB7JykKLQotICAgICMgTWFrZSBzdXJlICd9IGVsc2UgeycgaGFzIHNwYWNlcy4K
LSAgICBpZiBzZWFyY2gocid9ZWxzZScsIGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251bWJl
ciwgJ3doaXRlc3BhY2UvYnJhY2VzJywgNSwKLSAgICAgICAgICAgICAgJ01pc3Npbmcgc3BhY2Ug
YmVmb3JlIGVsc2UnKQotCi0gICAgIyBZb3Ugc2hvdWxkbid0IGhhdmUgc3BhY2VzIGJlZm9yZSB5
b3VyIGJyYWNrZXRzLCBleGNlcHQgbWF5YmUgYWZ0ZXIKLSAgICAjICdkZWxldGUgW10nIG9yICdu
ZXcgY2hhciAqIFtdJy4KLSAgICBpZiBzZWFyY2gocidcd1xzK1xbJywgbGluZSkgYW5kIG5vdCBz
ZWFyY2gocidkZWxldGVccytcWycsIGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251bWJlciwg
J3doaXRlc3BhY2UvYnJhY2VzJywgNSwKLSAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9y
ZSBbJykKLQotICAgICMgWW91IHNob3VsZG4ndCBoYXZlIGEgc3BhY2UgYmVmb3JlIGEgc2VtaWNv
bG9uIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUuCi0gICAgIyBUaGVyZSdzIGEgc3BlY2lhbCBjYXNl
IGZvciAiZm9yIiBzaW5jZSB0aGUgc3R5bGUgZ3VpZGUgYWxsb3dzIHNwYWNlIGJlZm9yZQotICAg
ICMgdGhlIHNlbWljb2xvbiB0aGVyZS4KLSAgICBpZiBzZWFyY2gocic6XHMqO1xzKiQnLCBsaW5l
KToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3NlbWljb2xvbicsIDUs
Ci0gICAgICAgICAgICAgICdTZW1pY29sb24gZGVmaW5pbmcgZW1wdHkgc3RhdGVtZW50LiBVc2Ug
eyB9IGluc3RlYWQuJykKLSAgICBlbGlmIHNlYXJjaChyJ15ccyo7XHMqJCcsIGxpbmUpOgotICAg
ICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2Uvc2VtaWNvbG9uJywgNSwKLSAgICAg
ICAgICAgICAgJ0xpbmUgY29udGFpbnMgb25seSBzZW1pY29sb24uIElmIHRoaXMgc2hvdWxkIGJl
IGFuIGVtcHR5IHN0YXRlbWVudCwgJwotICAgICAgICAgICAgICAndXNlIHsgfSBpbnN0ZWFkLicp
Ci0gICAgZWxpZiAoc2VhcmNoKHInXHMrO1xzKiQnLCBsaW5lKSBhbmQgbm90IHNlYXJjaChyJ1xi
Zm9yXGInLCBsaW5lKSk6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9z
ZW1pY29sb24nLCA1LAotICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgYmVmb3JlIGxhc3Qgc2Vt
aWNvbG9uLiBJZiB0aGlzIHNob3VsZCBiZSBhbiBlbXB0eSAnCi0gICAgICAgICAgICAgICdzdGF0
ZW1lbnQsIHVzZSB7IH0gaW5zdGVhZC4nKQotICAgIGVsaWYgKHNlYXJjaChyJ1xiKGZvcnx3aGls
ZSlccypcKC4qXClccyo7XHMqJCcsIGxpbmUpCi0gICAgICAgICAgYW5kIGxpbmUuY291bnQoJygn
KSA9PSBsaW5lLmNvdW50KCcpJykKLSAgICAgICAgICAjIEFsbG93IGRvIHt9IHdoaWxlKCk7Ci0g
ICAgICAgICAgYW5kIG5vdCBzZWFyY2gocid9XHMqd2hpbGUnLCBsaW5lKSk6Ci0gICAgICAgIGVy
cm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9zZW1pY29sb24nLCA1LAotICAgICAgICAgICAg
ICAnU2VtaWNvbG9uIGRlZmluaW5nIGVtcHR5IHN0YXRlbWVudCBmb3IgdGhpcyBsb29wLiBVc2Ug
eyB9IGluc3RlYWQuJykKLQotCi1kZWYgZ2V0X3ByZXZpb3VzX25vbl9ibGFua19saW5lKGNsZWFu
X2xpbmVzLCBsaW5lX251bWJlcik6Ci0gICAgIiIiUmV0dXJuIHRoZSBtb3N0IHJlY2VudCBub24t
YmxhbmsgbGluZSBhbmQgaXRzIGxpbmUgbnVtYmVyLgotCi0gICAgQXJnczoKLSAgICAgIGNsZWFu
X2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZSBjb250
ZW50cy4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNr
LgotCi0gICAgUmV0dXJuczoKLSAgICAgIEEgdHVwbGUgd2l0aCB0d28gZWxlbWVudHMuICBUaGUg
Zmlyc3QgZWxlbWVudCBpcyB0aGUgY29udGVudHMgb2YgdGhlIGxhc3QKLSAgICAgIG5vbi1ibGFu
ayBsaW5lIGJlZm9yZSB0aGUgY3VycmVudCBsaW5lLCBvciB0aGUgZW1wdHkgc3RyaW5nIGlmIHRo
aXMgaXMgdGhlCi0gICAgICBmaXJzdCBub24tYmxhbmsgbGluZS4gIFRoZSBzZWNvbmQgaXMgdGhl
IGxpbmUgbnVtYmVyIG9mIHRoYXQgbGluZSwgb3IgLTEKLSAgICAgIGlmIHRoaXMgaXMgdGhlIGZp
cnN0IG5vbi1ibGFuayBsaW5lLgotICAgICIiIgotCi0gICAgcHJldmlvdXNfbGluZV9udW1iZXIg
PSBsaW5lX251bWJlciAtIDEKLSAgICB3aGlsZSBwcmV2aW91c19saW5lX251bWJlciA+PSAwOgot
ICAgICAgICBwcmV2aW91c19saW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW3ByZXZpb3VzX2xpbmVf
bnVtYmVyXQotICAgICAgICBpZiBub3QgaXNfYmxhbmtfbGluZShwcmV2aW91c19saW5lKTogICAg
ICMgaWYgbm90IGEgYmxhbmsgbGluZS4uLgotICAgICAgICAgICAgcmV0dXJuIChwcmV2aW91c19s
aW5lLCBwcmV2aW91c19saW5lX251bWJlcikKLSAgICAgICAgcHJldmlvdXNfbGluZV9udW1iZXIg
LT0gMQotICAgIHJldHVybiAoJycsIC0xKQotCi0KLWRlZiBjaGVja19uYW1lc3BhY2VfaW5kZW50
YXRpb24oY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwgZmlsZV9zdGF0
ZSwgZXJyb3IpOgotICAgICIiIkxvb2tzIGZvciBpbmRlbnRhdGlvbiBlcnJvcnMgaW5zaWRlIG9m
IG5hbWVzcGFjZXMuCi0KLSAgICBBcmdzOgotICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRM
aW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgotICAgICAgbGluZV9udW1iZXI6IFRo
ZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCi0gICAgICBmaWxlX2V4dGVuc2lvbjogVGhl
IGV4dGVuc2lvbiAoZG90IG5vdCBpbmNsdWRlZCkgb2YgdGhlIGZpbGUuCi0gICAgICBmaWxlX3N0
YXRlOiBBIF9GaWxlU3RhdGUgaW5zdGFuY2Ugd2hpY2ggbWFpbnRhaW5zIGluZm9ybWF0aW9uIGFi
b3V0Ci0gICAgICAgICAgICAgICAgICB0aGUgc3RhdGUgb2YgdGhpbmdzIGluIHRoZSBmaWxlLgot
ICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4K
LSAgICAiIiIKLQotICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICMg
R2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncy4KLQotICAgIG5hbWVzcGFjZV9tYXRjaCA9
IG1hdGNoKHInKD9QPG5hbWVzcGFjZV9pbmRlbnRhdGlvbj5ccyopbmFtZXNwYWNlXHMrXFMrXHMq
e1xzKiQnLCBsaW5lKQotICAgIGlmIG5vdCBuYW1lc3BhY2VfbWF0Y2g6Ci0gICAgICAgIHJldHVy
bgotCi0gICAgY3VycmVudF9pbmRlbnRhdGlvbl9sZXZlbCA9IGxlbihuYW1lc3BhY2VfbWF0Y2gu
Z3JvdXAoJ25hbWVzcGFjZV9pbmRlbnRhdGlvbicpKQotICAgIGlmIGN1cnJlbnRfaW5kZW50YXRp
b25fbGV2ZWwgPiAwOgotICAgICAgICAjIERvbid0IHdhcm4gYWJvdXQgYW4gaW5kZW50ZWQgbmFt
ZXNwYWNlIGlmIHdlIGFscmVhZHkgd2FybmVkIGFib3V0IGluZGVudGVkIGNvZGUuCi0gICAgICAg
IGlmIG5vdCBmaWxlX3N0YXRlLmRpZF9pbnNpZGVfbmFtZXNwYWNlX2luZGVudF93YXJuaW5nKCk6
Ci0gICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvaW5kZW50JywgNCwK
LSAgICAgICAgICAgICAgICAgICduYW1lc3BhY2Ugc2hvdWxkIG5ldmVyIGJlIGluZGVudGVkLicp
Ci0gICAgICAgIHJldHVybgotICAgIGxvb2tpbmdfZm9yX3NlbWljb2xvbiA9IEZhbHNlOwotICAg
IGxpbmVfb2Zmc2V0ID0gMAotICAgIGluX3ByZXByb2Nlc3Nvcl9kaXJlY3RpdmUgPSBGYWxzZTsK
LSAgICBmb3IgY3VycmVudF9saW5lIGluIGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlciAr
IDE6XToKLSAgICAgICAgbGluZV9vZmZzZXQgKz0gMQotICAgICAgICBpZiBub3QgY3VycmVudF9s
aW5lLnN0cmlwKCk6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBub3QgY3VycmVu
dF9pbmRlbnRhdGlvbl9sZXZlbDoKLSAgICAgICAgICAgIGlmIG5vdCAoaW5fcHJlcHJvY2Vzc29y
X2RpcmVjdGl2ZSBvciBsb29raW5nX2Zvcl9zZW1pY29sb24pOgotICAgICAgICAgICAgICAgIGlm
IG5vdCBtYXRjaChyJ1xTJywgY3VycmVudF9saW5lKSBhbmQgbm90IGZpbGVfc3RhdGUuZGlkX2lu
c2lkZV9uYW1lc3BhY2VfaW5kZW50X3dhcm5pbmcoKToKLSAgICAgICAgICAgICAgICAgICAgZmls
ZV9zdGF0ZS5zZXRfZGlkX2luc2lkZV9uYW1lc3BhY2VfaW5kZW50X3dhcm5pbmcoKQotICAgICAg
ICAgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciArIGxpbmVfb2Zmc2V0LCAnd2hpdGVzcGFj
ZS9pbmRlbnQnLCA0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29kZSBpbnNpZGUgYSBu
YW1lc3BhY2Ugc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4nKQotICAgICAgICAgICAgaWYgaW5fcHJl
cHJvY2Vzc29yX2RpcmVjdGl2ZSBvciAoY3VycmVudF9saW5lLnN0cmlwKClbMF0gPT0gJyMnKTog
IyBUaGlzIHRha2VzIGNhcmUgb2YgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBzeW50YXguCi0gICAg
ICAgICAgICAgICAgaW5fcHJlcHJvY2Vzc29yX2RpcmVjdGl2ZSA9IGN1cnJlbnRfbGluZVstMV0g
PT0gJ1xcJwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb29raW5nX2Zvcl9z
ZW1pY29sb24gPSAoKGN1cnJlbnRfbGluZS5maW5kKCc7JykgPT0gLTEpIGFuZCAoY3VycmVudF9s
aW5lLnN0cmlwKClbLTFdICE9ICd9JykpIG9yIChjdXJyZW50X2xpbmVbLTFdID09ICdcXCcpCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb29raW5nX2Zvcl9zZW1pY29sb24gPSBGYWxzZTsg
IyBJZiB3ZSBoYXZlIGEgYnJhY2Ugd2UgbWF5IG5vdCBuZWVkIGEgc2VtaWNvbG9uLgotICAgICAg
ICBjdXJyZW50X2luZGVudGF0aW9uX2xldmVsICs9IGN1cnJlbnRfbGluZS5jb3VudCgneycpIC0g
Y3VycmVudF9saW5lLmNvdW50KCd9JykKLSAgICAgICAgaWYgY3VycmVudF9pbmRlbnRhdGlvbl9s
ZXZlbCA8IDA6Ci0gICAgICAgICAgICBicmVhazsKLQotZGVmIGNoZWNrX3VzaW5nX3N0ZChmaWxl
X2V4dGVuc2lvbiwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6Ci0gICAgIiIiTG9v
a3MgZm9yICd1c2luZyBzdGQ6OmZvbzsnIHN0YXRlbWVudHMgd2hpY2ggc2hvdWxkIGJlIHJlcGxh
Y2VkIHdpdGggJ3VzaW5nIG5hbWVzcGFjZSBzdGQ7Jy4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxl
X2V4dGVuc2lvbjogVGhlIGV4dGVuc2lvbiBvZiB0aGUgY3VycmVudCBmaWxlLCB3aXRob3V0IHRo
ZSBsZWFkaW5nIGRvdC4KLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFu
Y2UgY29udGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9m
IHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdp
dGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLQotICAgICMgVGhpcyBjaGVjayBkb2Vzbid0
IGFwcGx5IHRvIEMgb3IgT2JqZWN0aXZlLUMgaW1wbGVtZW50YXRpb24gZmlsZXMuCi0gICAgaWYg
aXNfY19vcl9vYmplY3RpdmVfYyhmaWxlX2V4dGVuc2lvbik6Ci0gICAgICAgIHJldHVybgotCi0g
ICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0gIyBHZXQgcmlkIG9mIGNv
bW1lbnRzIGFuZCBzdHJpbmdzLgotCi0gICAgdXNpbmdfc3RkX21hdGNoID0gbWF0Y2gocidccyp1
c2luZ1xzK3N0ZDo6KD9QPG1ldGhvZF9uYW1lPlxTKylccyo7XHMqJCcsIGxpbmUpCi0gICAgaWYg
bm90IHVzaW5nX3N0ZF9tYXRjaDoKLSAgICAgICAgcmV0dXJuCi0KLSAgICBtZXRob2RfbmFtZSA9
IHVzaW5nX3N0ZF9tYXRjaC5ncm91cCgnbWV0aG9kX25hbWUnKQotICAgIGVycm9yKGxpbmVfbnVt
YmVyLCAnYnVpbGQvdXNpbmdfc3RkJywgNCwKLSAgICAgICAgICAiVXNlICd1c2luZyBuYW1lc3Bh
Y2Ugc3RkOycgaW5zdGVhZCBvZiAndXNpbmcgc3RkOjolczsnLiIgJSBtZXRob2RfbmFtZSkKLQot
Ci1kZWYgY2hlY2tfbWF4X21pbl9tYWNyb3MoZmlsZV9leHRlbnNpb24sIGNsZWFuX2xpbmVzLCBs
aW5lX251bWJlciwgZXJyb3IpOgotICAgICIiIkxvb2tzIHVzZSBvZiBNQVgoKSBhbmQgTUlOKCkg
bWFjcm9zIHRoYXQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggc3RkOjptYXgoKSBhbmQgc3RkOjpt
aW4oKS4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlX2V4dGVuc2lvbjogVGhlIGV4dGVuc2lvbiBv
ZiB0aGUgY3VycmVudCBmaWxlLCB3aXRob3V0IHRoZSBsZWFkaW5nIGRvdC4KLSAgICAgIGNsZWFu
X2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KLSAg
ICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAg
ZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAi
IiIKLQotICAgICMgVGhpcyBjaGVjayBkb2Vzbid0IGFwcGx5IHRvIEMgb3IgT2JqZWN0aXZlLUMg
aW1wbGVtZW50YXRpb24gZmlsZXMuCi0gICAgaWYgaXNfY19vcl9vYmplY3RpdmVfYyhmaWxlX2V4
dGVuc2lvbik6Ci0gICAgICAgIHJldHVybgotCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRl
ZFtsaW5lX251bWJlcl0gIyBHZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzLgotCi0gICAg
bWF4X21pbl9tYWNyb3Nfc2VhcmNoID0gc2VhcmNoKHInXGIoP1A8bWF4X21pbl9tYWNybz4oTUFY
fE1JTikpXHMqXCgnLCBsaW5lKQotICAgIGlmIG5vdCBtYXhfbWluX21hY3Jvc19zZWFyY2g6Ci0g
ICAgICAgIHJldHVybgotCi0gICAgbWF4X21pbl9tYWNybyA9IG1heF9taW5fbWFjcm9zX3NlYXJj
aC5ncm91cCgnbWF4X21pbl9tYWNybycpCi0gICAgbWF4X21pbl9tYWNyb19sb3dlciA9IG1heF9t
aW5fbWFjcm8ubG93ZXIoKQotICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS9tYXhfbWlu
X21hY3JvcycsIDQsCi0gICAgICAgICAgJ1VzZSBzdGQ6OiVzKCkgb3Igc3RkOjolczx0eXBlPigp
IGluc3RlYWQgb2YgdGhlICVzKCkgbWFjcm8uJwotICAgICAgICAgICUgKG1heF9taW5fbWFjcm9f
bG93ZXIsIG1heF9taW5fbWFjcm9fbG93ZXIsIG1heF9taW5fbWFjcm8pKQotCi0KLWRlZiBjaGVj
a19zd2l0Y2hfaW5kZW50YXRpb24oY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6Ci0g
ICAgIiIiTG9va3MgZm9yIGluZGVudGF0aW9uIGVycm9ycyBpbnNpZGUgb2Ygc3dpdGNoIHN0YXRl
bWVudHMuCi0KLSAgICBBcmdzOgotICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBp
bnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgotICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1i
ZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNh
bGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICIiIgotCi0gICAgbGluZSA9IGNsZWFuX2xp
bmVzLmVsaWRlZFtsaW5lX251bWJlcl0gIyBHZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdz
LgotCi0gICAgc3dpdGNoX21hdGNoID0gbWF0Y2gocicoP1A8c3dpdGNoX2luZGVudGF0aW9uPlxz
Kilzd2l0Y2hccypcKC4rXClccyp7XHMqJCcsIGxpbmUpCi0gICAgaWYgbm90IHN3aXRjaF9tYXRj
aDoKLSAgICAgICAgcmV0dXJuCi0KLSAgICBzd2l0Y2hfaW5kZW50YXRpb24gPSBzd2l0Y2hfbWF0
Y2guZ3JvdXAoJ3N3aXRjaF9pbmRlbnRhdGlvbicpCi0gICAgaW5uZXJfaW5kZW50YXRpb24gPSBz
d2l0Y2hfaW5kZW50YXRpb24gKyAnICcgKiA0Ci0gICAgbGluZV9vZmZzZXQgPSAwCi0gICAgZW5j
b3VudGVyZWRfbmVzdGVkX3N3aXRjaCA9IEZhbHNlCi0KLSAgICBmb3IgY3VycmVudF9saW5lIGlu
IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlciArIDE6XToKLSAgICAgICAgbGluZV9vZmZz
ZXQgKz0gMQotCi0gICAgICAgICMgU2tpcCBub3Qgb25seSBlbXB0eSBsaW5lcyBidXQgYWxzbyB0
aG9zZSB3aXRoIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLgotICAgICAgICBpZiBjdXJyZW50X2xp
bmUuc3RyaXAoKSA9PSAnJyBvciBjdXJyZW50X2xpbmUuc3RhcnRzd2l0aCgnIycpOgotICAgICAg
ICAgICAgY29udGludWUKLQotICAgICAgICBpZiBtYXRjaChyJ1xzKnN3aXRjaFxzKlwoLitcKVxz
KntccyokJywgY3VycmVudF9saW5lKToKLSAgICAgICAgICAgICMgQ29tcGxleGl0eSBhbGFybSAt
IGFub3RoZXIgc3dpdGNoIHN0YXRlbWVudCBuZXN0ZWQgaW5zaWRlIHRoZSBvbmUKLSAgICAgICAg
ICAgICMgdGhhdCB3ZSdyZSBjdXJyZW50bHkgdGVzdGluZy4gV2UnbGwgbmVlZCB0byB0cmFjayB0
aGUgZXh0ZW50IG9mCi0gICAgICAgICAgICAjIHRoYXQgaW5uZXIgc3dpdGNoIGlmIHRoZSB1cGNv
bWluZyBsYWJlbCB0ZXN0cyBhcmUgc3RpbGwgc3VwcG9zZWQKLSAgICAgICAgICAgICMgdG8gd29y
ayBjb3JyZWN0bHkuIExldCdzIG5vdCBkbyB0aGF0OyBpbnN0ZWFkLCB3ZSdsbCBmaW5pc2gKLSAg
ICAgICAgICAgICMgY2hlY2tpbmcgdGhpcyBsaW5lLCBhbmQgdGhlbiBsZWF2ZSBpdCBsaWtlIHRo
YXQuIEFzc3VtaW5nIHRoZQotICAgICAgICAgICAgIyBpbmRlbnRhdGlvbiBpcyBkb25lIGNvbnNp
c3RlbnRseSAoZXZlbiBpZiBpbmNvcnJlY3RseSksIHRoaXMgd2lsbAotICAgICAgICAgICAgIyBz
dGlsbCBjYXRjaCBhbGwgaW5kZW50YXRpb24gaXNzdWVzIGluIHByYWN0aWNlLgotICAgICAgICAg
ICAgZW5jb3VudGVyZWRfbmVzdGVkX3N3aXRjaCA9IFRydWUKLQotICAgICAgICBjdXJyZW50X2lu
ZGVudGF0aW9uX21hdGNoID0gbWF0Y2gocicoP1A8aW5kZW50YXRpb24+XHMqKSg/UDxyZW1haW5p
bmdfbGluZT4uKikkJywgY3VycmVudF9saW5lKTsKLSAgICAgICAgY3VycmVudF9pbmRlbnRhdGlv
biA9IGN1cnJlbnRfaW5kZW50YXRpb25fbWF0Y2guZ3JvdXAoJ2luZGVudGF0aW9uJykKLSAgICAg
ICAgcmVtYWluaW5nX2xpbmUgPSBjdXJyZW50X2luZGVudGF0aW9uX21hdGNoLmdyb3VwKCdyZW1h
aW5pbmdfbGluZScpCi0KLSAgICAgICAgIyBFbmQgdGhlIGNoZWNrIGF0IHRoZSBlbmQgb2YgdGhl
IHN3aXRjaCBzdGF0ZW1lbnQuCi0gICAgICAgIGlmIHJlbWFpbmluZ19saW5lLnN0YXJ0c3dpdGgo
J30nKSBhbmQgY3VycmVudF9pbmRlbnRhdGlvbiA9PSBzd2l0Y2hfaW5kZW50YXRpb246Ci0gICAg
ICAgICAgICBicmVhawotICAgICAgICAjIENhc2UgYW5kIGRlZmF1bHQgYnJhbmNoZXMgc2hvdWxk
IG5vdCBiZSBpbmRlbnRlZC4gVGhlIHJlZ2V4cCBhbHNvCi0gICAgICAgICMgY2F0Y2hlcyBzaW5n
bGUtbGluZSBjYXNlcyBsaWtlICJkZWZhdWx0OiBicmVhazsiIGJ1dCBkb2VzIG5vdCB0cmlnZ2Vy
Ci0gICAgICAgICMgb24gc3R1ZmYgbGlrZSAiRG9jdW1lbnQ6OkZvbygpOyIuCi0gICAgICAgIGVs
aWYgbWF0Y2gocicoZGVmYXVsdHxjYXNlXHMrLiopXHMqOihbXjpdLiopPyQnLCByZW1haW5pbmdf
bGluZSk6Ci0gICAgICAgICAgICBpZiBjdXJyZW50X2luZGVudGF0aW9uICE9IHN3aXRjaF9pbmRl
bnRhdGlvbjoKLSAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciArIGxpbmVfb2Zmc2V0
LCAnd2hpdGVzcGFjZS9pbmRlbnQnLCA0LAotICAgICAgICAgICAgICAgICAgICAgICdBIGNhc2Ug
bGFiZWwgc2hvdWxkIG5vdCBiZSBpbmRlbnRlZCwgYnV0IGxpbmUgdXAgd2l0aCBpdHMgc3dpdGNo
IHN0YXRlbWVudC4nKQotICAgICAgICAgICAgICAgICMgRG9uJ3QgdGhyb3cgYW4gZXJyb3IgZm9y
IG11bHRpcGxlIGJhZGx5IGluZGVudGVkIGxhYmVscywKLSAgICAgICAgICAgICAgICAjIG9uZSBz
aG91bGQgYmUgZW5vdWdoIHRvIGZpZ3VyZSBvdXQgdGhlIHByb2JsZW0uCi0gICAgICAgICAgICAg
ICAgYnJlYWsKLSAgICAgICAgIyBXZSBpZ25vcmUgZ290byBsYWJlbHMgYXQgdGhlIHZlcnkgYmVn
aW5uaW5nIG9mIGEgbGluZS4KLSAgICAgICAgZWxpZiBtYXRjaChyJ1x3K1xzKjpccyokJywgcmVt
YWluaW5nX2xpbmUpOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgIyBJdCdzIG5vdCBh
IGdvdG8gbGFiZWwsIHNvIGNoZWNrIGlmIGl0J3MgaW5kZW50ZWQgYXQgbGVhc3QgYXMgZmFyIGFz
Ci0gICAgICAgICMgdGhlIHN3aXRjaCBzdGF0ZW1lbnQgcGx1cyBvbmUgbW9yZSBsZXZlbCBvZiBp
bmRlbnRhdGlvbi4KLSAgICAgICAgZWxpZiBub3QgY3VycmVudF9pbmRlbnRhdGlvbi5zdGFydHN3
aXRoKGlubmVyX2luZGVudGF0aW9uKToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyICsg
bGluZV9vZmZzZXQsICd3aGl0ZXNwYWNlL2luZGVudCcsIDQsCi0gICAgICAgICAgICAgICAgICAn
Tm9uLWxhYmVsIGNvZGUgaW5zaWRlIHN3aXRjaCBzdGF0ZW1lbnRzIHNob3VsZCBiZSBpbmRlbnRl
ZC4nKQotICAgICAgICAgICAgIyBEb24ndCB0aHJvdyBhbiBlcnJvciBmb3IgbXVsdGlwbGUgYmFk
bHkgaW5kZW50ZWQgc3RhdGVtZW50cywKLSAgICAgICAgICAgICMgb25lIHNob3VsZCBiZSBlbm91
Z2ggdG8gZmlndXJlIG91dCB0aGUgcHJvYmxlbS4KLSAgICAgICAgICAgIGJyZWFrCi0KLSAgICAg
ICAgaWYgZW5jb3VudGVyZWRfbmVzdGVkX3N3aXRjaDoKLSAgICAgICAgICAgIGJyZWFrCi0KLQot
ZGVmIGNoZWNrX2JyYWNlcyhjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKLSAgICAi
IiJMb29rcyBmb3IgbWlzcGxhY2VkIGJyYWNlcyAoZS5nLiBhdCB0aGUgZW5kIG9mIGxpbmUpLgot
Ci0gICAgQXJnczoKLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2Ug
Y29udGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRo
ZSBsaW5lIHRvIGNoZWNrLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGgg
YW55IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLQotICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlk
ZWRbbGluZV9udW1iZXJdICMgR2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncy4KLQotICAg
IGlmIG1hdGNoKHInXHMqe1xzKiQnLCBsaW5lKToKLSAgICAgICAgIyBXZSBhbGxvdyBhbiBvcGVu
IGJyYWNlIHRvIHN0YXJ0IGEgbGluZSBpbiB0aGUgY2FzZSB3aGVyZSBzb21lb25lCi0gICAgICAg
ICMgaXMgdXNpbmcgYnJhY2VzIGZvciBmdW5jdGlvbiBkZWZpbml0aW9uIG9yIGluIGEgYmxvY2sg
dG8KLSAgICAgICAgIyBleHBsaWNpdGx5IGNyZWF0ZSBhIG5ldyBzY29wZSwgd2hpY2ggaXMgY29t
bW9ubHkgdXNlZCB0byBjb250cm9sCi0gICAgICAgICMgdGhlIGxpZmV0aW1lIG9mIHN0YWNrLWFs
bG9jYXRlZCB2YXJpYWJsZXMuICBXZSBkb24ndCBkZXRlY3QgdGhpcwotICAgICAgICAjIHBlcmZl
Y3RseTogd2UganVzdCBkb24ndCBjb21wbGFpbiBpZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZQot
ICAgICAgICAjIGNoYXJhY3RlciBvbiB0aGUgcHJldmlvdXMgbm9uLWJsYW5rIGxpbmUgaXMgJzsn
LCAnOicsICd7JywgJ30nLAotICAgICAgICAjICcpJywgb3IgJykgY29uc3QnIGFuZCBkb2Vzbid0
IGJlZ2luIHdpdGggJ2lmfGZvcnx3aGlsZXxzd2l0Y2h8ZWxzZScuCi0gICAgICAgICMgV2UgYWxz
byBhbGxvdyAnIycgZm9yICNlbmRpZiBhbmQgJz0nIGZvciBhcnJheSBpbml0aWFsaXphdGlvbi4K
LSAgICAgICAgcHJldmlvdXNfbGluZSA9IGdldF9wcmV2aW91c19ub25fYmxhbmtfbGluZShjbGVh
bl9saW5lcywgbGluZV9udW1iZXIpWzBdCi0gICAgICAgIGlmICgobm90IHNlYXJjaChyJ1s7On17
KT1dXHMqJHxcKVxzKmNvbnN0XHMqJCcsIHByZXZpb3VzX2xpbmUpCi0gICAgICAgICAgICAgb3Ig
c2VhcmNoKHInXGIoaWZ8Zm9yfGZvcmVhY2h8d2hpbGV8c3dpdGNofGVsc2UpXGInLCBwcmV2aW91
c19saW5lKSkKLSAgICAgICAgICAgIGFuZCBwcmV2aW91c19saW5lLmZpbmQoJyMnKSA8IDApOgot
ICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2JyYWNlcycsIDQsCi0g
ICAgICAgICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2
aW91cyBsaW5lJykKLSAgICBlbGlmIChzZWFyY2gocidcKVxzKihjb25zdFxzKik/e1xzKiQnLCBs
aW5lKQotICAgICAgICAgIGFuZCBsaW5lLmNvdW50KCcoJykgPT0gbGluZS5jb3VudCgnKScpCi0g
ICAgICAgICAgYW5kIG5vdCBzZWFyY2gocidcYihpZnxmb3J8Zm9yZWFjaHx3aGlsZXxzd2l0Y2gp
XGInLCBsaW5lKQotICAgICAgICAgIGFuZCBub3QgbWF0Y2gocidccytbQS1aX11bQS1aXzAtOV0r
XGInLCBsaW5lKSk6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9icmFj
ZXMnLCA0LAotICAgICAgICAgICAgICAnUGxhY2UgYnJhY2Ugb24gaXRzIG93biBsaW5lIGZvciBm
dW5jdGlvbiBkZWZpbml0aW9ucy4nKQotCi0gICAgaWYgKG1hdGNoKHInXHMqfVxzKihlbHNlXHMq
KHtccyopPyk/JCcsIGxpbmUpIGFuZCBsaW5lX251bWJlciA+IDEpOgotICAgICAgICAjIFdlIGNo
ZWNrIGlmIGEgY2xvc2VkIGJyYWNlIGhhcyBzdGFydGVkIGEgbGluZSB0byBzZWUgaWYgYQotICAg
ICAgICAjIG9uZSBsaW5lIGNvbnRyb2wgc3RhdGVtZW50IHdhcyBwcmV2aW91cy4KLSAgICAgICAg
cHJldmlvdXNfbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlciAtIDJdCi0gICAg
ICAgIGlmIChwcmV2aW91c19saW5lLmZpbmQoJ3snKSA+IDAgYW5kIHByZXZpb3VzX2xpbmUuZmlu
ZCgnfScpIDwgMAotICAgICAgICAgICAgYW5kIHNlYXJjaChyJ1xiKGlmfGZvcnxmb3JlYWNofHdo
aWxlfGVsc2UpXGInLCBwcmV2aW91c19saW5lKSk6Ci0gICAgICAgICAgICBlcnJvcihsaW5lX251
bWJlciwgJ3doaXRlc3BhY2UvYnJhY2VzJywgNCwKLSAgICAgICAgICAgICAgICAgICdPbmUgbGlu
ZSBjb250cm9sIGNsYXVzZXMgc2hvdWxkIG5vdCB1c2UgYnJhY2VzLicpCi0KLSAgICAjIEFuIGVs
c2UgY2xhdXNlIHNob3VsZCBiZSBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBwcmVjZWRpbmcgY2xv
c2luZyBicmFjZS4KLSAgICBpZiBtYXRjaChyJ1xzKmVsc2VccyonLCBsaW5lKToKLSAgICAgICAg
cHJldmlvdXNfbGluZSA9IGdldF9wcmV2aW91c19ub25fYmxhbmtfbGluZShjbGVhbl9saW5lcywg
bGluZV9udW1iZXIpWzBdCi0gICAgICAgIGlmIG1hdGNoKHInXHMqfVxzKiQnLCBwcmV2aW91c19s
aW5lKToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9uZXdsaW5l
JywgNCwKLSAgICAgICAgICAgICAgICAgICdBbiBlbHNlIHNob3VsZCBhcHBlYXIgb24gdGhlIHNh
bWUgbGluZSBhcyB0aGUgcHJlY2VkaW5nIH0nKQotCi0gICAgIyBMaWtld2lzZSwgYW4gZWxzZSBz
aG91bGQgbmV2ZXIgaGF2ZSB0aGUgZWxzZSBjbGF1c2Ugb24gdGhlIHNhbWUgbGluZQotICAgIGlm
IHNlYXJjaChyJ1xiZWxzZSBbXlxze10nLCBsaW5lKSBhbmQgbm90IHNlYXJjaChyJ1xiZWxzZSBp
ZlxiJywgbGluZSk6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9uZXds
aW5lJywgNCwKLSAgICAgICAgICAgICAgJ0Vsc2UgY2xhdXNlIHNob3VsZCBuZXZlciBiZSBvbiBz
YW1lIGxpbmUgYXMgZWxzZSAodXNlIDIgbGluZXMpJykKLQotICAgICMgSW4gdGhlIHNhbWUgd2F5
LCBhIGRvL3doaWxlIHNob3VsZCBuZXZlciBiZSBvbiBvbmUgbGluZQotICAgIGlmIG1hdGNoKHIn
XHMqZG8gW15cc3tdJywgbGluZSk6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVz
cGFjZS9uZXdsaW5lJywgNCwKLSAgICAgICAgICAgICAgJ2RvL3doaWxlIGNsYXVzZXMgc2hvdWxk
IG5vdCBiZSBvbiBhIHNpbmdsZSBsaW5lJykKLQotICAgICMgQnJhY2VzIHNob3VsZG4ndCBiZSBm
b2xsb3dlZCBieSBhIDsgdW5sZXNzIHRoZXkncmUgZGVmaW5pbmcgYSBzdHJ1Y3QKLSAgICAjIG9y
IGluaXRpYWxpemluZyBhbiBhcnJheS4KLSAgICAjIFdlIGNhbid0IHRlbGwgaW4gZ2VuZXJhbCwg
YnV0IHdlIGNhbiBmb3Igc29tZSBjb21tb24gY2FzZXMuCi0gICAgcHJldmlvdXNfbGluZV9udW1i
ZXIgPSBsaW5lX251bWJlcgotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIChwcmV2aW91c19saW5l
LCBwcmV2aW91c19saW5lX251bWJlcikgPSBnZXRfcHJldmlvdXNfbm9uX2JsYW5rX2xpbmUoY2xl
YW5fbGluZXMsIHByZXZpb3VzX2xpbmVfbnVtYmVyKQotICAgICAgICBpZiBtYXRjaChyJ1xzK3su
Kn1ccyo7JywgbGluZSkgYW5kIG5vdCBwcmV2aW91c19saW5lLmNvdW50KCc7Jyk6Ci0gICAgICAg
ICAgICBsaW5lID0gcHJldmlvdXNfbGluZSArIGxpbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIGJyZWFrCi0gICAgaWYgKHNlYXJjaChyJ3suKn1ccyo7JywgbGluZSkKLSAgICAgICAgYW5k
IGxpbmUuY291bnQoJ3snKSA9PSBsaW5lLmNvdW50KCd9JykKLSAgICAgICAgYW5kIG5vdCBzZWFy
Y2gocidzdHJ1Y3R8Y2xhc3N8ZW51bXxccyo9XHMqeycsIGxpbmUpKToKLSAgICAgICAgZXJyb3Io
bGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9icmFjZXMnLCA0LAotICAgICAgICAgICAgICAiWW91
IGRvbid0IG5lZWQgYSA7IGFmdGVyIGEgfSIpCi0KLQotZGVmIGNoZWNrX2V4aXRfc3RhdGVtZW50
X3NpbXBsaWZpY2F0aW9ucyhjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKLSAgICAi
IiJMb29rcyBmb3IgZWxzZSBvciBlbHNlLWlmIHN0YXRlbWVudHMgdGhhdCBzaG91bGQgYmUgd3Jp
dHRlbiBhcyBhbgotICAgIGlmIHN0YXRlbWVudCB3aGVuIHRoZSBwcmlvciBpZiBjb25jbHVkZXMg
d2l0aCBhIHJldHVybiwgYnJlYWssIGNvbnRpbnVlIG9yCi0gICAgZ290byBzdGF0ZW1lbnQuCi0K
LSAgICBBcmdzOgotICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBj
b250YWluaW5nIHRoZSBmaWxlLgotICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhl
IGxpbmUgdG8gY2hlY2suCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBh
bnkgZXJyb3JzIGZvdW5kLgotICAgICIiIgotCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRl
ZFtsaW5lX251bWJlcl0gIyBHZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzLgotCi0gICAg
ZWxzZV9tYXRjaCA9IG1hdGNoKHInKD9QPGVsc2VfaW5kZW50YXRpb24+XHMqKShcfVxzKik/ZWxz
ZShccytpZlxzKlwofCg/UDxlbHNlPlxzKihce1xzKik/XFopKScsIGxpbmUpCi0gICAgaWYgbm90
IGVsc2VfbWF0Y2g6Ci0gICAgICAgIHJldHVybgotCi0gICAgZWxzZV9pbmRlbnRhdGlvbiA9IGVs
c2VfbWF0Y2guZ3JvdXAoJ2Vsc2VfaW5kZW50YXRpb24nKQotICAgIGlubmVyX2luZGVudGF0aW9u
ID0gZWxzZV9pbmRlbnRhdGlvbiArICcgJyAqIDQKLQotICAgIHByZXZpb3VzX2xpbmVzID0gY2xl
YW5fbGluZXMuZWxpZGVkWzpsaW5lX251bWJlcl0KLSAgICBwcmV2aW91c19saW5lcy5yZXZlcnNl
KCkKLSAgICBsaW5lX29mZnNldCA9IDAKLSAgICBlbmNvdW50ZXJlZF9leGl0X3N0YXRlbWVudCA9
IEZhbHNlCi0KLSAgICBmb3IgY3VycmVudF9saW5lIGluIHByZXZpb3VzX2xpbmVzOgotICAgICAg
ICBsaW5lX29mZnNldCAtPSAxCi0KLSAgICAgICAgIyBTa2lwIG5vdCBvbmx5IGVtcHR5IGxpbmVz
IGJ1dCBhbHNvIHRob3NlIHdpdGggcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMKLSAgICAgICAgIyBh
bmQgZ290byBsYWJlbHMuCi0gICAgICAgIGlmIGN1cnJlbnRfbGluZS5zdHJpcCgpID09ICcnIG9y
IGN1cnJlbnRfbGluZS5zdGFydHN3aXRoKCcjJykgb3IgbWF0Y2gocidcdytccyo6XHMqJCcsIGN1
cnJlbnRfbGluZSk6Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICMgU2tpcCBsaW5l
cyB3aXRoIGNsb3NpbmcgYnJhY2VzIG9uIHRoZSBvcmlnaW5hbCBpbmRlbnRhdGlvbiBsZXZlbC4K
LSAgICAgICAgIyBFdmVuIHRob3VnaCB0aGUgc3R5bGVndWlkZSBzYXlzIHRoZXkgc2hvdWxkIGJl
IG9uIHRoZSBzYW1lIGxpbmUgYXMKLSAgICAgICAgIyB0aGUgImVsc2UgaWYiIHN0YXRlbWVudCwg
d2UgYWxzbyB3YW50IHRvIGNoZWNrIGZvciBpbnN0YW5jZXMgd2hlcmUKLSAgICAgICAgIyB0aGUg
Y3VycmVudCBjb2RlIGRvZXMgbm90IGNvbXBseSB3aXRoIHRoZSBjb2Rpbmcgc3R5bGUuIFRodXMs
IGlnbm9yZQotICAgICAgICAjIHRoZXNlIGxpbmVzIGFuZCBwcm9jZWVkIHRvIHRoZSBsaW5lIGJl
Zm9yZSB0aGF0LgotICAgICAgICBpZiBjdXJyZW50X2xpbmUgPT0gZWxzZV9pbmRlbnRhdGlvbiAr
ICd9JzoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgY3VycmVudF9pbmRlbnRhdGlv
bl9tYXRjaCA9IG1hdGNoKHInKD9QPGluZGVudGF0aW9uPlxzKikoP1A8cmVtYWluaW5nX2xpbmU+
LiopJCcsIGN1cnJlbnRfbGluZSk7Ci0gICAgICAgIGN1cnJlbnRfaW5kZW50YXRpb24gPSBjdXJy
ZW50X2luZGVudGF0aW9uX21hdGNoLmdyb3VwKCdpbmRlbnRhdGlvbicpCi0gICAgICAgIHJlbWFp
bmluZ19saW5lID0gY3VycmVudF9pbmRlbnRhdGlvbl9tYXRjaC5ncm91cCgncmVtYWluaW5nX2xp
bmUnKQotCi0gICAgICAgICMgQXMgd2UncmUgZ29pbmcgdXAgdGhlIGxpbmVzLCB0aGUgZmlyc3Qg
cmVhbCBzdGF0ZW1lbnQgdG8gZW5jb3VudGVyCi0gICAgICAgICMgaGFzIHRvIGJlIGFuIGV4aXQg
c3RhdGVtZW50IChyZXR1cm4sIGJyZWFrLCBjb250aW51ZSBvciBnb3RvKSAtCi0gICAgICAgICMg
b3RoZXJ3aXNlLCB0aGlzIGNoZWNrIGRvZXNuJ3QgYXBwbHkuCi0gICAgICAgIGlmIG5vdCBlbmNv
dW50ZXJlZF9leGl0X3N0YXRlbWVudDoKLSAgICAgICAgICAgICMgV2Ugb25seSB3YW50IHRvIGZp
bmQgZXhpdCBzdGF0ZW1lbnRzIGlmIHRoZXkgYXJlIG9uIGV4YWN0bHkKLSAgICAgICAgICAgICMg
dGhlIHNhbWUgbGV2ZWwgb2YgaW5kZW50YXRpb24gYXMgZXhwZWN0ZWQgZnJvbSB0aGUgY29kZSBp
bnNpZGUKLSAgICAgICAgICAgICMgdGhlIGJsb2NrLiBJZiB0aGUgaW5kZW50YXRpb24gZG9lc24n
dCBzdHJpY3RseSBtYXRjaCB0aGVuIHdlCi0gICAgICAgICAgICAjIG1pZ2h0IGhhdmUgYSBuZXN0
ZWQgaWYgb3Igc29tZXRoaW5nLCB3aGljaCBtdXN0IGJlIGlnbm9yZWQuCi0gICAgICAgICAgICBp
ZiBjdXJyZW50X2luZGVudGF0aW9uICE9IGlubmVyX2luZGVudGF0aW9uOgotICAgICAgICAgICAg
ICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBtYXRjaChyJyhyZXR1cm4oXFcrLiopfChicmVha3xj
b250aW51ZSlccyo7fGdvdG9ccypcdys7KSQnLCByZW1haW5pbmdfbGluZSk6Ci0gICAgICAgICAg
ICAgICAgZW5jb3VudGVyZWRfZXhpdF9zdGF0ZW1lbnQgPSBUcnVlCi0gICAgICAgICAgICAgICAg
Y29udGludWUKLSAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgIyBXaGVuIGNvZGUgZXhlY3V0
aW9uIHJlYWNoZXMgdGhpcyBwb2ludCwgd2UndmUgZm91bmQgYW4gZXhpdCBzdGF0ZW1lbnQKLSAg
ICAgICAgIyBhcyBsYXN0IHN0YXRlbWVudCBvZiB0aGUgcHJldmlvdXMgYmxvY2suIE5vdyB3ZSBv
bmx5IG5lZWQgdG8gbWFrZQotICAgICAgICAjIHN1cmUgdGhhdCB0aGUgYmxvY2sgYmVsb25ncyB0
byBhbiAiaWYiLCB0aGVuIHdlIGNhbiB0aHJvdyBhbiBlcnJvci4KLQotICAgICAgICAjIFNraXAg
bGluZXMgd2l0aCBvcGVuaW5nIGJyYWNlcyBvbiB0aGUgb3JpZ2luYWwgaW5kZW50YXRpb24gbGV2
ZWwsCi0gICAgICAgICMgc2ltaWxhciB0byB0aGUgY2xvc2luZyBicmFjZXMgY2hlY2sgYWJvdmUu
ICgiaWYgKGNvbmRpdGlvbilcbnsiKQotICAgICAgICBpZiBjdXJyZW50X2xpbmUgPT0gZWxzZV9p
bmRlbnRhdGlvbiArICd7JzoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgIyBTa2lw
IGV2ZXJ5dGhpbmcgdGhhdCdzIGZ1cnRoZXIgaW5kZW50ZWQgdGhhbiBvdXIgImVsc2UiIG9yICJl
bHNlIGlmIi4KLSAgICAgICAgaWYgY3VycmVudF9pbmRlbnRhdGlvbi5zdGFydHN3aXRoKGVsc2Vf
aW5kZW50YXRpb24pIGFuZCBjdXJyZW50X2luZGVudGF0aW9uICE9IGVsc2VfaW5kZW50YXRpb246
Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICMgU28gd2UndmUgZ290IGEgbGluZSB3
aXRoIHNhbWUgKG9yIGxlc3MpIGluZGVudGF0aW9uLiBJcyBpdCBhbiAiaWYiPwotICAgICAgICAj
IElmIHllczogdGhyb3cgYW4gZXJyb3IuIElmIG5vOiBkb24ndCB0aHJvdyBhbiBlcnJvci4KLSAg
ICAgICAgIyBXaGF0ZXZlciB0aGUgb3V0Y29tZSwgdGhpcyBpcyB0aGUgZW5kIG9mIG91ciBsb29w
LgotICAgICAgICBpZiBtYXRjaChyJ2lmXHMqXCgnLCByZW1haW5pbmdfbGluZSk6Ci0gICAgICAg
ICAgICBpZiBlbHNlX21hdGNoLnN0YXJ0KCdlbHNlJykgIT0gLTE6Ci0gICAgICAgICAgICAgICAg
ZXJyb3IobGluZV9udW1iZXIgKyBsaW5lX29mZnNldCwgJ3JlYWRhYmlsaXR5L2NvbnRyb2xfZmxv
dycsIDQsCi0gICAgICAgICAgICAgICAgICAgICAgJ0FuIGVsc2Ugc3RhdGVtZW50IGNhbiBiZSBy
ZW1vdmVkIHdoZW4gdGhlIHByaW9yICJpZiIgJwotICAgICAgICAgICAgICAgICAgICAgICdjb25j
bHVkZXMgd2l0aCBhIHJldHVybiwgYnJlYWssIGNvbnRpbnVlIG9yIGdvdG8gc3RhdGVtZW50Licp
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyICsg
bGluZV9vZmZzZXQsICdyZWFkYWJpbGl0eS9jb250cm9sX2Zsb3cnLCA0LAotICAgICAgICAgICAg
ICAgICAgICAgICdBbiBlbHNlIGlmIHN0YXRlbWVudCBzaG91bGQgYmUgd3JpdHRlbiBhcyBhbiBp
ZiBzdGF0ZW1lbnQgJwotICAgICAgICAgICAgICAgICAgICAgICd3aGVuIHRoZSBwcmlvciAiaWYi
IGNvbmNsdWRlcyB3aXRoIGEgcmV0dXJuLCBicmVhaywgJwotICAgICAgICAgICAgICAgICAgICAg
ICdjb250aW51ZSBvciBnb3RvIHN0YXRlbWVudC4nKQotICAgICAgICBicmVhawotCi0KLWRlZiBy
ZXBsYWNlYWJsZV9jaGVjayhvcGVyYXRvciwgbWFjcm8sIGxpbmUpOgotICAgICIiIkRldGVybWlu
ZSB3aGV0aGVyIGEgYmFzaWMgQ0hFQ0sgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBtb3JlIHNwZWNp
ZmljIG9uZS4KLQotICAgIEZvciBleGFtcGxlIHN1Z2dlc3QgdXNpbmcgQ0hFQ0tfRVEgaW5zdGVh
ZCBvZiBDSEVDSyhhID09IGIpIGFuZAotICAgIHNpbWlsYXJseSBmb3IgQ0hFQ0tfR0UsIENIRUNL
X0dULCBDSEVDS19MRSwgQ0hFQ0tfTFQsIENIRUNLX05FLgotCi0gICAgQXJnczoKLSAgICAgIG9w
ZXJhdG9yOiBUaGUgQysrIG9wZXJhdG9yIHVzZWQgaW4gdGhlIENIRUNLLgotICAgICAgbWFjcm86
IFRoZSBDSEVDSyBvciBFWFBFQ1QgbWFjcm8gYmVpbmcgY2FsbGVkLgotICAgICAgbGluZTogVGhl
IGN1cnJlbnQgc291cmNlIGxpbmUuCi0KLSAgICBSZXR1cm5zOgotICAgICAgVHJ1ZSBpZiB0aGUg
Q0hFQ0sgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBtb3JlIHNwZWNpZmljIG9uZS4KLSAgICAiIiIK
LQotICAgICMgVGhpcyBtYXRjaGVzIGRlY2ltYWwgYW5kIGhleCBpbnRlZ2Vycywgc3RyaW5ncywg
YW5kIGNoYXJzIChpbiB0aGF0IG9yZGVyKS4KLSAgICBtYXRjaF9jb25zdGFudCA9IHInKFstK10/
KFxkK3wwW3hYXVswLTlhLWZBLUZdKylbbEx1VV17MCwzfXwiLioifFwnLipcJyknCi0KLSAgICAj
IEV4cHJlc3Npb24gdG8gbWF0Y2ggdHdvIHNpZGVzIG9mIHRoZSBvcGVyYXRvciB3aXRoIHNvbWV0
aGluZyB0aGF0Ci0gICAgIyBsb29rcyBsaWtlIGEgbGl0ZXJhbCwgc2luY2UgQ0hFQ0soeCA9PSBp
dGVyYXRvcikgd29uJ3QgY29tcGlsZS4KLSAgICAjIFRoaXMgbWVhbnMgd2UgY2FuJ3QgY2F0Y2gg
YWxsIHRoZSBjYXNlcyB3aGVyZSBhIG1vcmUgc3BlY2lmaWMKLSAgICAjIENIRUNLIGlzIHBvc3Np
YmxlLCBidXQgaXQncyBsZXNzIGFubm95aW5nIHRoYW4gZGVhbGluZyB3aXRoCi0gICAgIyBleHRy
YW5lb3VzIHdhcm5pbmdzLgotICAgIG1hdGNoX3RoaXMgPSAocidccyonICsgbWFjcm8gKyByJ1wo
KFxzKicgKwotICAgICAgICAgICAgICAgICAgbWF0Y2hfY29uc3RhbnQgKyByJ1xzKicgKyBvcGVy
YXRvciArIHInW148Pl0uKnwnCi0gICAgICAgICAgICAgICAgICByJy4qW148Pl0nICsgb3BlcmF0
b3IgKyByJ1xzKicgKyBtYXRjaF9jb25zdGFudCArCi0gICAgICAgICAgICAgICAgICByJ1xzKlwp
KScpCi0KLSAgICAjIERvbid0IGNvbXBsYWluIGFib3V0IENIRUNLKHggPT0gTlVMTCkgb3Igc2lt
aWxhciBiZWNhdXNlCi0gICAgIyBDSEVDS19FUSh4LCBOVUxMKSB3b24ndCBjb21waWxlIChyZXF1
aXJlcyBhIGNhc3QpLgotICAgICMgQWxzbywgZG9uJ3QgY29tcGxhaW4gYWJvdXQgbW9yZSBjb21w
bGV4IGJvb2xlYW4gZXhwcmVzc2lvbnMKLSAgICAjIGludm9sdmluZyAmJiBvciB8fCBzdWNoIGFz
IENIRUNLKGEgPT0gYiB8fCBjID09IGQpLgotICAgIHJldHVybiBtYXRjaChtYXRjaF90aGlzLCBs
aW5lKSBhbmQgbm90IHNlYXJjaChyJ05VTEx8JiZ8XHxcfCcsIGxpbmUpCi0KLQotZGVmIGNoZWNr
X2NoZWNrKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgotICAgICIiIkNoZWNrcyB0
aGUgdXNlIG9mIENIRUNLIGFuZCBFWFBFQ1QgbWFjcm9zLgotCi0gICAgQXJnczoKLSAgICAgIGNs
ZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4K
LSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAg
ICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAg
ICAiIiIKLQotICAgICMgRGVjaWRlIHRoZSBzZXQgb2YgcmVwbGFjZW1lbnQgbWFjcm9zIHRoYXQg
c2hvdWxkIGJlIHN1Z2dlc3RlZAotICAgIHJhd19saW5lcyA9IGNsZWFuX2xpbmVzLnJhd19saW5l
cwotICAgIGN1cnJlbnRfbWFjcm8gPSAnJwotICAgIGZvciBtYWNybyBpbiBfQ0hFQ0tfTUFDUk9T
OgotICAgICAgICBpZiByYXdfbGluZXNbbGluZV9udW1iZXJdLmZpbmQobWFjcm8pID49IDA6Ci0g
ICAgICAgICAgICBjdXJyZW50X21hY3JvID0gbWFjcm8KLSAgICAgICAgICAgIGJyZWFrCi0gICAg
aWYgbm90IGN1cnJlbnRfbWFjcm86Ci0gICAgICAgICMgRG9uJ3Qgd2FzdGUgdGltZSBoZXJlIGlm
IGxpbmUgZG9lc24ndCBjb250YWluICdDSEVDSycgb3IgJ0VYUEVDVCcKLSAgICAgICAgcmV0dXJu
Ci0KLSAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXSAgICAgICAgIyBn
ZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzCi0KLSAgICAjIEVuY291cmFnZSByZXBsYWNp
bmcgcGxhaW4gQ0hFQ0tzIHdpdGggQ0hFQ0tfRVEvQ0hFQ0tfTkUvZXRjLgotICAgIGZvciBvcGVy
YXRvciBpbiBbJz09JywgJyE9JywgJz49JywgJz4nLCAnPD0nLCAnPCddOgotICAgICAgICBpZiBy
ZXBsYWNlYWJsZV9jaGVjayhvcGVyYXRvciwgY3VycmVudF9tYWNybywgbGluZSk6Ci0gICAgICAg
ICAgICBlcnJvcihsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L2NoZWNrJywgMiwKLSAgICAgICAg
ICAgICAgICAgICdDb25zaWRlciB1c2luZyAlcyBpbnN0ZWFkIG9mICVzKGEgJXMgYiknICUgKAot
ICAgICAgICAgICAgICAgICAgICAgIF9DSEVDS19SRVBMQUNFTUVOVFtjdXJyZW50X21hY3JvXVtv
cGVyYXRvcl0sCi0gICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9tYWNybywgb3BlcmF0b3Ip
KQotICAgICAgICAgICAgYnJlYWsKLQotCi1kZWYgY2hlY2tfZm9yX2NvbXBhcmlzb25zX3RvX3pl
cm8oY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6Ci0gICAgIyBHZXQgdGhlIGxpbmUg
d2l0aG91dCBjb21tZW50cyBhbmQgc3RyaW5ncy4KLSAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxp
ZGVkW2xpbmVfbnVtYmVyXQotCi0gICAgIyBJbmNsdWRlIE5VTEwgaGVyZSBzbyB0aGF0IHVzZXJz
IGRvbid0IGhhdmUgdG8gY29udmVydCBOVUxMIHRvIDAgZmlyc3QgYW5kIHRoZW4gZ2V0IHRoaXMg
ZXJyb3IuCi0gICAgaWYgc2VhcmNoKHInWz0hXT1ccyooTlVMTHwwfHRydWV8ZmFsc2UpXFcnLCBs
aW5lKSBvciBzZWFyY2gocidcVyhOVUxMfDB8dHJ1ZXxmYWxzZSlccypbPSFdPScsIGxpbmUpOgot
ICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L2NvbXBhcmlzb25fdG9femVy
bycsIDUsCi0gICAgICAgICAgICAgICdUZXN0cyBmb3IgdHJ1ZS9mYWxzZSwgbnVsbC9ub24tbnVs
bCwgYW5kIHplcm8vbm9uLXplcm8gc2hvdWxkIGFsbCBiZSBkb25lIHdpdGhvdXQgZXF1YWxpdHkg
Y29tcGFyaXNvbnMuJykKLQotCi1kZWYgY2hlY2tfZm9yX251bGwoZmlsZV9leHRlbnNpb24sIGNs
ZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgotICAgICMgVGhpcyBjaGVjayBkb2Vzbid0
IGFwcGx5IHRvIEMgb3IgT2JqZWN0aXZlLUMgaW1wbGVtZW50YXRpb24gZmlsZXMuCi0gICAgaWYg
aXNfY19vcl9vYmplY3RpdmVfYyhmaWxlX2V4dGVuc2lvbik6Ci0gICAgICAgIHJldHVybgotCi0g
ICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0KLQotICAgICMgRG9uJ3Qg
d2FybiBhYm91dCBOVUxMIHVzYWdlIGluIGdfb2JqZWN0X3tnZXQsc2V0fSgpLiBTZWUgQnVnIDMy
ODU4Ci0gICAgaWYgc2VhcmNoKHInXGJnX29iamVjdF9bc2ddZXRcYicsIGxpbmUpOgotICAgICAg
ICByZXR1cm4KLQotICAgICMgRG9uJ3Qgd2FybiBhYm91dCBOVUxMIHVzYWdlIGluIGdfc3Rye2pv
aW4sY29uY2F0fSgpLiBTZWUgQnVnIDM0ODM0Ci0gICAgaWYgc2VhcmNoKHInXGJnX3N0cihqb2lu
fGNvbmNhdClcYicsIGxpbmUpOgotICAgICAgICByZXR1cm4KLQotICAgIGlmIHNlYXJjaChyJ1xi
TlVMTFxiJywgbGluZSk6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkv
bnVsbCcsIDUsICdVc2UgMCBpbnN0ZWFkIG9mIE5VTEwuJykKLSAgICAgICAgcmV0dXJuCi0KLSAg
ICBsaW5lID0gY2xlYW5fbGluZXMucmF3X2xpbmVzW2xpbmVfbnVtYmVyXQotICAgICMgU2VlIGlm
IE5VTEwgb2NjdXJzIGluIGFueSBjb21tZW50cyBpbiB0aGUgbGluZS4gSWYgdGhlIHNlYXJjaCBm
b3IgTlVMTCB1c2luZyB0aGUgcmF3IGxpbmUKLSAgICAjIG1hdGNoZXMsIHRoZW4gZG8gdGhlIGNo
ZWNrIHdpdGggc3RyaW5ncyBjb2xsYXBzZWQgdG8gYXZvaWQgZ2l2aW5nIGVycm9ycyBmb3IKLSAg
ICAjIE5VTExzIG9jY3VycmluZyBpbiBzdHJpbmdzLgotICAgIGlmIHNlYXJjaChyJ1xiTlVMTFxi
JywgbGluZSkgYW5kIHNlYXJjaChyJ1xiTlVMTFxiJywgQ2xlYW5zZWRMaW5lcy5jb2xsYXBzZV9z
dHJpbmdzKGxpbmUpKToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9u
dWxsJywgNCwgJ1VzZSAwIGluc3RlYWQgb2YgTlVMTC4nKQotCi1kZWYgZ2V0X2xpbmVfd2lkdGgo
bGluZSk6Ci0gICAgIiIiRGV0ZXJtaW5lcyB0aGUgd2lkdGggb2YgdGhlIGxpbmUgaW4gY29sdW1u
IHBvc2l0aW9ucy4KLQotICAgIEFyZ3M6Ci0gICAgICBsaW5lOiBBIHN0cmluZywgd2hpY2ggbWF5
IGJlIGEgVW5pY29kZSBzdHJpbmcuCi0KLSAgICBSZXR1cm5zOgotICAgICAgVGhlIHdpZHRoIG9m
IHRoZSBsaW5lIGluIGNvbHVtbiBwb3NpdGlvbnMsIGFjY291bnRpbmcgZm9yIFVuaWNvZGUKLSAg
ICAgIGNvbWJpbmluZyBjaGFyYWN0ZXJzIGFuZCB3aWRlIGNoYXJhY3RlcnMuCi0gICAgIiIiCi0g
ICAgaWYgaXNpbnN0YW5jZShsaW5lLCB1bmljb2RlKToKLSAgICAgICAgd2lkdGggPSAwCi0gICAg
ICAgIGZvciBjIGluIHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgnTkZDJywgbGluZSk6Ci0gICAgICAg
ICAgICBpZiB1bmljb2RlZGF0YS5lYXN0X2FzaWFuX3dpZHRoKGMpIGluICgnVycsICdGJyk6Ci0g
ICAgICAgICAgICAgICAgd2lkdGggKz0gMgotICAgICAgICAgICAgZWxpZiBub3QgdW5pY29kZWRh
dGEuY29tYmluaW5nKGMpOgotICAgICAgICAgICAgICAgIHdpZHRoICs9IDEKLSAgICAgICAgcmV0
dXJuIHdpZHRoCi0gICAgcmV0dXJuIGxlbihsaW5lKQotCi0KLWRlZiBjaGVja19zdHlsZShjbGVh
bl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBmaWxlX3N0YXRlLCBlcnJvcik6
Ci0gICAgIiIiQ2hlY2tzIHJ1bGVzIGZyb20gdGhlICdDKysgc3R5bGUgcnVsZXMnIHNlY3Rpb24g
b2YgY3BwZ3VpZGUuaHRtbC4KLQotICAgIE1vc3Qgb2YgdGhlc2UgcnVsZXMgYXJlIGhhcmQgdG8g
dGVzdCAobmFtaW5nLCBjb21tZW50IHN0eWxlKSwgYnV0IHdlCi0gICAgZG8gd2hhdCB3ZSBjYW4u
ICBJbiBwYXJ0aWN1bGFyIHdlIGNoZWNrIGZvciA0LXNwYWNlIGluZGVudHMsIGxpbmUgbGVuZ3Ro
cywKLSAgICB0YWIgdXNhZ2UsIHNwYWNlcyBpbnNpZGUgY29kZSwgZXRjLgotCi0gICAgQXJnczoK
LSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0
aGUgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNo
ZWNrLgotICAgICAgZmlsZV9leHRlbnNpb246IFRoZSBleHRlbnNpb24gKHdpdGhvdXQgdGhlIGRv
dCkgb2YgdGhlIGZpbGVuYW1lLgotICAgICAgZmlsZV9zdGF0ZTogQSBfRmlsZVN0YXRlIGluc3Rh
bmNlIHdoaWNoIG1haW50YWlucyBpbmZvcm1hdGlvbiBhYm91dAotICAgICAgICAgICAgICAgICAg
dGhlIHN0YXRlIG9mIHRoaW5ncyBpbiB0aGUgZmlsZS4KLSAgICAgIGVycm9yOiBUaGUgZnVuY3Rp
b24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCi0gICAgIiIiCi0KLSAgICByYXdfbGlu
ZXMgPSBjbGVhbl9saW5lcy5yYXdfbGluZXMKLSAgICBsaW5lID0gcmF3X2xpbmVzW2xpbmVfbnVt
YmVyXQotCi0gICAgaWYgbGluZS5maW5kKCdcdCcpICE9IC0xOgotICAgICAgICBlcnJvcihsaW5l
X251bWJlciwgJ3doaXRlc3BhY2UvdGFiJywgMSwKLSAgICAgICAgICAgICAgJ1RhYiBmb3VuZDsg
YmV0dGVyIHRvIHVzZSBzcGFjZXMnKQotCi0gICAgIyBPbmUgb3IgdGhyZWUgYmxhbmsgc3BhY2Vz
IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUgaXMgd2VpcmQ7IGl0J3MKLSAgICAjIGhhcmQg
dG8gcmVjb25jaWxlIHRoYXQgd2l0aCA0LXNwYWNlIGluZGVudHMuCi0gICAgIyBOT1RFOiBoZXJl
IGFyZSB0aGUgY29uZGl0aW9ucyByb2IgcGlrZSB1c2VkIGZvciBoaXMgdGVzdHMuICBNaW5lIGFy
ZW4ndAotICAgICMgYXMgc29waGlzdGljYXRlZCwgYnV0IGl0IG1heSBiZSB3b3J0aCBiZWNvbWlu
ZyBzbzogIFJMRU5HVEg9PWluaXRpYWxfc3BhY2VzCi0gICAgIyBpZihSTEVOR1RIID4gMjApIGNv
bXBsYWluID0gMDsKLSAgICAjIGlmKG1hdGNoKCQwLCAiICsoZXJyb3J8cHJpdmF0ZXxwdWJsaWN8
cHJvdGVjdGVkKToiKSkgY29tcGxhaW4gPSAwOwotICAgICMgaWYobWF0Y2gocHJldiwgIiYmICok
IikpIGNvbXBsYWluID0gMDsKLSAgICAjIGlmKG1hdGNoKHByZXYsICJcXHxcXHwgKiQiKSkgY29t
cGxhaW4gPSAwOwotICAgICMgaWYobWF0Y2gocHJldiwgIltcIiw9PjxdICokIikpIGNvbXBsYWlu
ID0gMDsKLSAgICAjIGlmKG1hdGNoKCQwLCAiIDw8IikpIGNvbXBsYWluID0gMDsKLSAgICAjIGlm
KG1hdGNoKHByZXYsICIgK2ZvciBcXCgiKSkgY29tcGxhaW4gPSAwOwotICAgICMgaWYocHJldm9k
ZCAmJiBtYXRjaChwcmV2cHJldiwgIiArZm9yIFxcKCIpKSBjb21wbGFpbiA9IDA7Ci0gICAgaW5p
dGlhbF9zcGFjZXMgPSAwCi0gICAgY2xlYW5zZWRfbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFts
aW5lX251bWJlcl0KLSAgICB3aGlsZSBpbml0aWFsX3NwYWNlcyA8IGxlbihsaW5lKSBhbmQgbGlu
ZVtpbml0aWFsX3NwYWNlc10gPT0gJyAnOgotICAgICAgICBpbml0aWFsX3NwYWNlcyArPSAxCi0g
ICAgaWYgbGluZSBhbmQgbGluZVstMV0uaXNzcGFjZSgpOgotICAgICAgICBlcnJvcihsaW5lX251
bWJlciwgJ3doaXRlc3BhY2UvZW5kX29mX2xpbmUnLCA0LAotICAgICAgICAgICAgICAnTGluZSBl
bmRzIGluIHdoaXRlc3BhY2UuICBDb25zaWRlciBkZWxldGluZyB0aGVzZSBleHRyYSBzcGFjZXMu
JykKLSAgICAjIFRoZXJlIGFyZSBjZXJ0YWluIHNpdHVhdGlvbnMgd2UgYWxsb3cgb25lIHNwYWNl
LCBub3RhYmx5IGZvciBsYWJlbHMKLSAgICBlbGlmICgoaW5pdGlhbF9zcGFjZXMgPj0gMSBhbmQg
aW5pdGlhbF9zcGFjZXMgPD0gMykKLSAgICAgICAgICBhbmQgbm90IG1hdGNoKHInXHMqXHcrXHMq
OlxzKiQnLCBjbGVhbnNlZF9saW5lKSk6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnd2hp
dGVzcGFjZS9pbmRlbnQnLCAzLAotICAgICAgICAgICAgICAnV2VpcmQgbnVtYmVyIG9mIHNwYWNl
cyBhdCBsaW5lLXN0YXJ0LiAgJwotICAgICAgICAgICAgICAnQXJlIHlvdSB1c2luZyBhIDQtc3Bh
Y2UgaW5kZW50PycpCi0gICAgIyBMYWJlbHMgc2hvdWxkIGFsd2F5cyBiZSBpbmRlbnRlZCBhdCBs
ZWFzdCBvbmUgc3BhY2UuCi0gICAgZWxpZiBub3QgaW5pdGlhbF9zcGFjZXMgYW5kIGxpbmVbOjJd
ICE9ICcvLyc6Ci0gICAgICAgIGxhYmVsX21hdGNoID0gbWF0Y2gocicoP1A8bGFiZWw+W146XSsp
OlxzKiQnLCBsaW5lKQotCi0gICAgICAgIGlmIGxhYmVsX21hdGNoOgotICAgICAgICAgICAgbGFi
ZWwgPSBsYWJlbF9tYXRjaC5ncm91cCgnbGFiZWwnKQotICAgICAgICAgICAgIyBPbmx5IHRocm93
IGVycm9ycyBmb3Igc3R1ZmYgdGhhdCBpcyBkZWZpbml0ZWx5IG5vdCBhIGdvdG8gbGFiZWwsCi0g
ICAgICAgICAgICAjIGJlY2F1c2UgZ290byBsYWJlbHMgY2FuIGluIGZhY3Qgb2NjdXIgYXQgdGhl
IHN0YXJ0IG9mIHRoZSBsaW5lLgotICAgICAgICAgICAgaWYgbGFiZWwgaW4gWydwdWJsaWMnLCAn
cHJpdmF0ZScsICdwcm90ZWN0ZWQnXSBvciBsYWJlbC5maW5kKCcgJykgIT0gLTE6Ci0gICAgICAg
ICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2xhYmVscycsIDQsCi0gICAg
ICAgICAgICAgICAgICAgICAgJ0xhYmVscyBzaG91bGQgYWx3YXlzIGJlIGluZGVudGVkIGF0IGxl
YXN0IG9uZSBzcGFjZS4gICcKLSAgICAgICAgICAgICAgICAgICAgICAnSWYgdGhpcyBpcyBhIG1l
bWJlci1pbml0aWFsaXplciBsaXN0IGluIGEgY29uc3RydWN0b3IsICcKLSAgICAgICAgICAgICAg
ICAgICAgICAndGhlIGNvbG9uIHNob3VsZCBiZSBvbiB0aGUgbGluZSBhZnRlciB0aGUgZGVmaW5p
dGlvbiBoZWFkZXIuJykKLQotICAgIGlmIChjbGVhbnNlZF9saW5lLmNvdW50KCc7JykgPiAxCi0g
ICAgICAgICMgZm9yIGxvb3BzIGFyZSBhbGxvd2VkIHR3byA7J3MgKGFuZCBtYXkgcnVuIG92ZXIg
dHdvIGxpbmVzKS4KLSAgICAgICAgYW5kIGNsZWFuc2VkX2xpbmUuZmluZCgnZm9yJykgPT0gLTEK
LSAgICAgICAgYW5kIChnZXRfcHJldmlvdXNfbm9uX2JsYW5rX2xpbmUoY2xlYW5fbGluZXMsIGxp
bmVfbnVtYmVyKVswXS5maW5kKCdmb3InKSA9PSAtMQotICAgICAgICAgICAgIG9yIGdldF9wcmV2
aW91c19ub25fYmxhbmtfbGluZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIpWzBdLmZpbmQoJzsn
KSAhPSAtMSkKLSAgICAgICAgIyBJdCdzIG9rIHRvIGhhdmUgbWFueSBjb21tYW5kcyBpbiBhIHN3
aXRjaCBjYXNlIHRoYXQgZml0cyBpbiAxIGxpbmUKLSAgICAgICAgYW5kIG5vdCAoKGNsZWFuc2Vk
X2xpbmUuZmluZCgnY2FzZSAnKSAhPSAtMQotICAgICAgICAgICAgICAgICAgb3IgY2xlYW5zZWRf
bGluZS5maW5kKCdkZWZhdWx0OicpICE9IC0xKQotICAgICAgICAgICAgICAgICBhbmQgY2xlYW5z
ZWRfbGluZS5maW5kKCdicmVhazsnKSAhPSAtMSkKLSAgICAgICAgYW5kIG5vdCBjbGVhbnNlZF9s
aW5lLnN0YXJ0c3dpdGgoJyNkZWZpbmUgJykpOgotICAgICAgICBlcnJvcihsaW5lX251bWJlciwg
J3doaXRlc3BhY2UvbmV3bGluZScsIDQsCi0gICAgICAgICAgICAgICdNb3JlIHRoYW4gb25lIGNv
bW1hbmQgb24gdGhlIHNhbWUgbGluZScpCi0KLSAgICBpZiBjbGVhbnNlZF9saW5lLnN0cmlwKCku
ZW5kc3dpdGgoJ3x8Jykgb3IgY2xlYW5zZWRfbGluZS5zdHJpcCgpLmVuZHN3aXRoKCcmJicpOgot
ICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2Uvb3BlcmF0b3JzJywgNCwKLSAg
ICAgICAgICAgICAgJ0Jvb2xlYW4gZXhwcmVzc2lvbnMgdGhhdCBzcGFuIG11bHRpcGxlIGxpbmVz
IHNob3VsZCBoYXZlIHRoZWlyICcKLSAgICAgICAgICAgICAgJ29wZXJhdG9ycyBvbiB0aGUgbGVm
dCBzaWRlIG9mIHRoZSBsaW5lIGluc3RlYWQgb2YgdGhlIHJpZ2h0IHNpZGUuJykKLQotICAgICMg
U29tZSBtb3JlIHN0eWxlIGNoZWNrcwotICAgIGNoZWNrX25hbWVzcGFjZV9pbmRlbnRhdGlvbihj
bGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBmaWxlX3N0YXRlLCBlcnJv
cikKLSAgICBjaGVja191c2luZ19zdGQoZmlsZV9leHRlbnNpb24sIGNsZWFuX2xpbmVzLCBsaW5l
X251bWJlciwgZXJyb3IpCi0gICAgY2hlY2tfbWF4X21pbl9tYWNyb3MoZmlsZV9leHRlbnNpb24s
IGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpCi0gICAgY2hlY2tfc3dpdGNoX2luZGVu
dGF0aW9uKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpCi0gICAgY2hlY2tfYnJhY2Vz
KGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpCi0gICAgY2hlY2tfZXhpdF9zdGF0ZW1l
bnRfc2ltcGxpZmljYXRpb25zKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpCi0gICAg
Y2hlY2tfc3BhY2luZyhmaWxlX2V4dGVuc2lvbiwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBl
cnJvcikKLSAgICBjaGVja19jaGVjayhjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKQot
ICAgIGNoZWNrX2Zvcl9jb21wYXJpc29uc190b196ZXJvKGNsZWFuX2xpbmVzLCBsaW5lX251bWJl
ciwgZXJyb3IpCi0gICAgY2hlY2tfZm9yX251bGwoZmlsZV9leHRlbnNpb24sIGNsZWFuX2xpbmVz
LCBsaW5lX251bWJlciwgZXJyb3IpCi0KLQotX1JFX1BBVFRFUk5fSU5DTFVERV9ORVdfU1RZTEUg
PSByZS5jb21waWxlKHInI2luY2x1ZGUgKyJbXi9dK1wuaCInKQotX1JFX1BBVFRFUk5fSU5DTFVE
RSA9IHJlLmNvbXBpbGUocideXHMqI1xzKmluY2x1ZGVccyooWzwiXSkoW14+Il0qKVs+Il0uKiQn
KQotIyBNYXRjaGVzIHRoZSBmaXJzdCBjb21wb25lbnQgb2YgYSBmaWxlbmFtZSBkZWxpbWl0ZWQg
YnkgLXMgYW5kIF9zLiBUaGF0IGlzOgotIyAgX1JFX0ZJUlNUX0NPTVBPTkVOVC5tYXRjaCgnZm9v
JykuZ3JvdXAoMCkgPT0gJ2ZvbycKLSMgIF9SRV9GSVJTVF9DT01QT05FTlQubWF0Y2goJ2Zvby5j
cHAnKS5ncm91cCgwKSA9PSAnZm9vJwotIyAgX1JFX0ZJUlNUX0NPTVBPTkVOVC5tYXRjaCgnZm9v
LWJhcl9iYXouY3BwJykuZ3JvdXAoMCkgPT0gJ2ZvbycKLSMgIF9SRV9GSVJTVF9DT01QT05FTlQu
bWF0Y2goJ2Zvb19iYXItYmF6LmNwcCcpLmdyb3VwKDApID09ICdmb28nCi1fUkVfRklSU1RfQ09N
UE9ORU5UID0gcmUuY29tcGlsZShyJ15bXi1fLl0rJykKLQotCi1kZWYgX2Ryb3BfY29tbW9uX3N1
ZmZpeGVzKGZpbGVuYW1lKToKLSAgICAiIiJEcm9wcyBjb21tb24gc3VmZml4ZXMgbGlrZSBfdGVz
dC5jcHAgb3IgLWlubC5oIGZyb20gZmlsZW5hbWUuCi0KLSAgICBGb3IgZXhhbXBsZToKLSAgICAg
ID4+PiBfZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9mb28taW5sLmgnKQotICAgICAgJ2Zvby9m
b28nCi0gICAgICA+Pj4gX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vYmFyL2Zvby5jcHAnKQot
ICAgICAgJ2Zvby9iYXIvZm9vJwotICAgICAgPj4+IF9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9v
L2Zvb19pbnRlcm5hbC5oJykKLSAgICAgICdmb28vZm9vJwotICAgICAgPj4+IF9kcm9wX2NvbW1v
bl9zdWZmaXhlcygnZm9vL2Zvb191bnVzdWFsaW50ZXJuYWwuaCcpCi0gICAgICAnZm9vL2Zvb191
bnVzdWFsaW50ZXJuYWwnCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBpbnB1dCBm
aWxlbmFtZS4KLQotICAgIFJldHVybnM6Ci0gICAgICBUaGUgZmlsZW5hbWUgd2l0aCB0aGUgY29t
bW9uIHN1ZmZpeCByZW1vdmVkLgotICAgICIiIgotICAgIGZvciBzdWZmaXggaW4gKCd0ZXN0LmNw
cCcsICdyZWd0ZXN0LmNwcCcsICd1bml0dGVzdC5jcHAnLAotICAgICAgICAgICAgICAgICAgICdp
bmwuaCcsICdpbXBsLmgnLCAnaW50ZXJuYWwuaCcpOgotICAgICAgICBpZiAoZmlsZW5hbWUuZW5k
c3dpdGgoc3VmZml4KSBhbmQgbGVuKGZpbGVuYW1lKSA+IGxlbihzdWZmaXgpCi0gICAgICAgICAg
ICBhbmQgZmlsZW5hbWVbLWxlbihzdWZmaXgpIC0gMV0gaW4gKCctJywgJ18nKSk6Ci0gICAgICAg
ICAgICByZXR1cm4gZmlsZW5hbWVbOi1sZW4oc3VmZml4KSAtIDFdCi0gICAgcmV0dXJuIG9zLnBh
dGguc3BsaXRleHQoZmlsZW5hbWUpWzBdCi0KLQotZGVmIF9jbGFzc2lmeV9pbmNsdWRlKGZpbGVu
YW1lLCBpbmNsdWRlLCBpc19zeXN0ZW0sIGluY2x1ZGVfc3RhdGUpOgotICAgICIiIkZpZ3VyZXMg
b3V0IHdoYXQga2luZCBvZiBoZWFkZXIgJ2luY2x1ZGUnIGlzLgotCi0gICAgQXJnczoKLSAgICAg
IGZpbGVuYW1lOiBUaGUgY3VycmVudCBmaWxlIGNwcF9zdHlsZSBpcyBydW5uaW5nIG92ZXIuCi0g
ICAgICBpbmNsdWRlOiBUaGUgcGF0aCB0byBhICNpbmNsdWRlZCBmaWxlLgotICAgICAgaXNfc3lz
dGVtOiBUcnVlIGlmIHRoZSAjaW5jbHVkZSB1c2VkIDw+IHJhdGhlciB0aGFuICIiLgotICAgICAg
aW5jbHVkZV9zdGF0ZTogQW4gX0luY2x1ZGVTdGF0ZSBpbnN0YW5jZSBpbiB3aGljaCB0aGUgaGVh
ZGVycyBhcmUgaW5zZXJ0ZWQuCi0KLSAgICBSZXR1cm5zOgotICAgICAgT25lIG9mIHRoZSBfWFhY
X0hFQURFUiBjb25zdGFudHMuCi0KLSAgICBGb3IgZXhhbXBsZToKLSAgICAgID4+PiBfY2xhc3Np
ZnlfaW5jbHVkZSgnZm9vLmNwcCcsICdjb25maWcuaCcsIEZhbHNlKQotICAgICAgX0NPTkZJR19I
RUFERVIKLSAgICAgID4+PiBfY2xhc3NpZnlfaW5jbHVkZSgnZm9vLmNwcCcsICdmb28uaCcsIEZh
bHNlKQotICAgICAgX1BSSU1BUllfSEVBREVSCi0gICAgICA+Pj4gX2NsYXNzaWZ5X2luY2x1ZGUo
J2Zvby5jcHAnLCAnYmFyLmgnLCBGYWxzZSkKLSAgICAgIF9PVEhFUl9IRUFERVIKLSAgICAiIiIK
LQotICAgICMgSWYgaXQgaXMgYSBzeXN0ZW0gaGVhZGVyIHdlIGtub3cgaXQgaXMgY2xhc3NpZmll
ZCBhcyBfT1RIRVJfSEVBREVSLgotICAgIGlmIGlzX3N5c3RlbToKLSAgICAgICAgcmV0dXJuIF9P
VEhFUl9IRUFERVIKLQotICAgICMgSWYgdGhlIGluY2x1ZGUgaXMgbmFtZWQgY29uZmlnLmggdGhl
biB0aGlzIGlzIFdlYkNvcmUvY29uZmlnLmguCi0gICAgaWYgaW5jbHVkZSA9PSAiY29uZmlnLmgi
OgotICAgICAgICByZXR1cm4gX0NPTkZJR19IRUFERVIKLQotICAgICMgVGhlcmUgY2Fubm90IGJl
IHByaW1hcnkgaW5jbHVkZXMgaW4gaGVhZGVyIGZpbGVzIHRoZW1zZWx2ZXMuIE9ubHkgYW4KLSAg
ICAjIGluY2x1ZGUgZXhhY3RseSBtYXRjaGVzIHRoZSBoZWFkZXIgZmlsZW5hbWUgd2lsbCBiZSBp
cyBmbGFnZ2VkIGFzCi0gICAgIyBwcmltYXJ5LCBzbyB0aGF0IGl0IHRyaWdnZXJzIHRoZSAiZG9u
J3QgaW5jbHVkZSB5b3Vyc2VsZiIgY2hlY2suCi0gICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoJy5o
JykgYW5kIGZpbGVuYW1lICE9IGluY2x1ZGU6Ci0gICAgICAgIHJldHVybiBfT1RIRVJfSEVBREVS
OwotCi0gICAgIyBRdCdzIG1vYyBmaWxlcyBkbyBub3QgZm9sbG93IHRoZSBuYW1pbmcgYW5kIG9y
ZGVyaW5nIHJ1bGVzLCBzbyB0aGV5IHNob3VsZCBiZSBza2lwcGVkCi0gICAgaWYgaW5jbHVkZS5z
dGFydHN3aXRoKCdtb2NfJykgYW5kIGluY2x1ZGUuZW5kc3dpdGgoJy5jcHAnKToKLSAgICAgICAg
cmV0dXJuIF9NT0NfSEVBREVSCi0KLSAgICBpZiBpbmNsdWRlLmVuZHN3aXRoKCcubW9jJyk6Ci0g
ICAgICAgIHJldHVybiBfTU9DX0hFQURFUgotCi0gICAgIyBJZiB0aGUgdGFyZ2V0IGZpbGUgYmFz
ZW5hbWUgc3RhcnRzIHdpdGggdGhlIGluY2x1ZGUgd2UncmUgY2hlY2tpbmcKLSAgICAjIHRoZW4g
d2UgY29uc2lkZXIgaXQgdGhlIHByaW1hcnkgaGVhZGVyLgotICAgIHRhcmdldF9iYXNlID0gRmls
ZUluZm8oZmlsZW5hbWUpLmJhc2VfbmFtZSgpCi0gICAgaW5jbHVkZV9iYXNlID0gRmlsZUluZm8o
aW5jbHVkZSkuYmFzZV9uYW1lKCkKLQotICAgICMgSWYgd2UgaGF2ZW4ndCBlbmNvdW50ZXJlZCBh
IHByaW1hcnkgaGVhZGVyLCB0aGVuIGJlIGxlbmllbnQgaW4gY2hlY2tpbmcuCi0gICAgaWYgbm90
IGluY2x1ZGVfc3RhdGUudmlzaXRlZF9wcmltYXJ5X3NlY3Rpb24oKSBhbmQgdGFyZ2V0X2Jhc2Uu
ZmluZChpbmNsdWRlX2Jhc2UpICE9IC0xOgotICAgICAgICByZXR1cm4gX1BSSU1BUllfSEVBREVS
Ci0gICAgIyBJZiB3ZSBhbHJlYWR5IGVuY291bnRlcmVkIGEgcHJpbWFyeSBoZWFkZXIsIHBlcmZv
cm0gYSBzdHJpY3QgY29tcGFyaXNvbi4KLSAgICAjIEluIGNhc2UgdGhlIHR3byBmaWxlbmFtZSBi
YXNlcyBhcmUgdGhlIHNhbWUgdGhlbiB0aGUgYWJvdmUgbGVuaWVudCBjaGVjawotICAgICMgcHJv
YmFibHkgd2FzIGEgZmFsc2UgcG9zaXRpdmUuCi0gICAgZWxpZiBpbmNsdWRlX3N0YXRlLnZpc2l0
ZWRfcHJpbWFyeV9zZWN0aW9uKCkgYW5kIHRhcmdldF9iYXNlID09IGluY2x1ZGVfYmFzZToKLSAg
ICAgICAgaWYgaW5jbHVkZSA9PSAiUmVzb3VyY2VIYW5kbGVXaW4uaCI6Ci0gICAgICAgICAgICAj
IEZJWE1FOiBUaHVzIGZhciwgd2UndmUgb25seSBzZWVuIG9uZSBleGFtcGxlIG9mIHRoZXNlLCBi
dXQgaWYgd2UKLSAgICAgICAgICAgICMgc3RhcnQgdG8gc2VlIG1vcmUsIHBsZWFzZSBjb25zaWRl
ciBnZW5lcmFsaXppbmcgdGhpcyBjaGVjawotICAgICAgICAgICAgIyBzb21laG93LgotICAgICAg
ICAgICAgcmV0dXJuIF9PVEhFUl9IRUFERVIKLSAgICAgICAgcmV0dXJuIF9QUklNQVJZX0hFQURF
UgotCi0gICAgcmV0dXJuIF9PVEhFUl9IRUFERVIKLQotCi1kZWYgY2hlY2tfaW5jbHVkZV9saW5l
KGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBpbmNs
dWRlX3N0YXRlLCBlcnJvcik6Ci0gICAgIiIiQ2hlY2sgcnVsZXMgdGhhdCBhcmUgYXBwbGljYWJs
ZSB0byAjaW5jbHVkZSBsaW5lcy4KLQotICAgIFN0cmluZ3Mgb24gI2luY2x1ZGUgbGluZXMgYXJl
IE5PVCByZW1vdmVkIGZyb20gZWxpZGVkIGxpbmUsIHRvIG1ha2UKLSAgICBjZXJ0YWluIHRhc2tz
IGVhc2llci4gSG93ZXZlciwgdG8gcHJldmVudCBmYWxzZSBwb3NpdGl2ZXMsIGNoZWNrcwotICAg
IGFwcGxpY2FibGUgdG8gI2luY2x1ZGUgbGluZXMgaW4gQ2hlY2tMYW5ndWFnZSBtdXN0IGJlIHB1
dCBoZXJlLgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3Vy
cmVudCBmaWxlLgotICAgICAgZmlsZV9leHRlbnNpb246IFRoZSBjdXJyZW50IGZpbGUgZXh0ZW5z
aW9uLCB3aXRob3V0IHRoZSBsZWFkaW5nIGRvdC4KLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFu
c2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVy
OiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgaW5jbHVkZV9zdGF0ZTog
QW4gX0luY2x1ZGVTdGF0ZSBpbnN0YW5jZSBpbiB3aGljaCB0aGUgaGVhZGVycyBhcmUgaW5zZXJ0
ZWQuCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZv
dW5kLgotICAgICIiIgotICAgICMgRklYTUU6IEZvciByZWFkYWJpbGl0eSBvciBhcyBhIHBvc3Np
YmxlIG9wdGltaXphdGlvbiwgY29uc2lkZXIKLSAgICAjICAgICAgICBleGl0aW5nIGVhcmx5IGhl
cmUgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgImJ1aWxkL2luY2x1ZGUiCi0gICAgIyAgICAgICAg
Y2F0ZWdvcnkgc2hvdWxkIGJlIGNoZWNrZWQgZm9yIHRoZSBnaXZlbiBmaWxlbmFtZS4gIFRoaXMK
LSAgICAjICAgICAgICBtYXkgaW52b2x2ZSBoYXZpbmcgdGhlIGVycm9yIGhhbmRsZXIgY2xhc3Nl
cyBleHBvc2UgYQotICAgICMgICAgICAgIHNob3VsZF9jaGVjaygpIG1ldGhvZCwgaW4gYWRkaXRp
b24gdG8gdGhlIHVzdWFsIF9fY2FsbF9fCi0gICAgIyAgICAgICAgbWV0aG9kLgotICAgIGxpbmUg
PSBjbGVhbl9saW5lcy5saW5lc1tsaW5lX251bWJlcl0KLQotICAgIG1hdGNoZWQgPSBfUkVfUEFU
VEVSTl9JTkNMVURFLnNlYXJjaChsaW5lKQotICAgIGlmIG5vdCBtYXRjaGVkOgotICAgICAgICBy
ZXR1cm4KLQotICAgIGluY2x1ZGUgPSBtYXRjaGVkLmdyb3VwKDIpCi0gICAgaXNfc3lzdGVtID0g
KG1hdGNoZWQuZ3JvdXAoMSkgPT0gJzwnKQotCi0gICAgIyBMb29rIGZvciBhbnkgb2YgdGhlIHN0
cmVhbSBjbGFzc2VzIHRoYXQgYXJlIHBhcnQgb2Ygc3RhbmRhcmQgQysrLgotICAgIGlmIG1hdGNo
KHInKGZ8aW5kfGlvfGl8b3xwYXJzZXxwZnxzdGRpb3xzdHJ8KT9zdHJlYW0kJywgaW5jbHVkZSk6
Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvc3RyZWFtcycsIDMsCi0g
ICAgICAgICAgICAgICdTdHJlYW1zIGFyZSBoaWdobHkgZGlzY291cmFnZWQuJykKLQotICAgICMg
TG9vayBmb3Igc3BlY2lmaWMgaW5jbHVkZXMgdG8gZml4LgotICAgIGlmIGluY2x1ZGUuc3RhcnRz
d2l0aCgnd3RmLycpIGFuZCBub3QgaXNfc3lzdGVtOgotICAgICAgICBlcnJvcihsaW5lX251bWJl
ciwgJ2J1aWxkL2luY2x1ZGUnLCA0LAotICAgICAgICAgICAgICAnd3RmIGluY2x1ZGVzIHNob3Vs
ZCBiZSA8d3RmL2ZpbGUuaD4gaW5zdGVhZCBvZiAid3RmL2ZpbGUuaCIuJykKLQotICAgIGR1cGxp
Y2F0ZV9oZWFkZXIgPSBpbmNsdWRlIGluIGluY2x1ZGVfc3RhdGUKLSAgICBpZiBkdXBsaWNhdGVf
aGVhZGVyOgotICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL2luY2x1ZGUnLCA0LAot
ICAgICAgICAgICAgICAnIiVzIiBhbHJlYWR5IGluY2x1ZGVkIGF0ICVzOiVzJyAlCi0gICAgICAg
ICAgICAgIChpbmNsdWRlLCBmaWxlbmFtZSwgaW5jbHVkZV9zdGF0ZVtpbmNsdWRlXSkpCi0gICAg
ZWxzZToKLSAgICAgICAgaW5jbHVkZV9zdGF0ZVtpbmNsdWRlXSA9IGxpbmVfbnVtYmVyCi0KLSAg
ICBoZWFkZXJfdHlwZSA9IF9jbGFzc2lmeV9pbmNsdWRlKGZpbGVuYW1lLCBpbmNsdWRlLCBpc19z
eXN0ZW0sIGluY2x1ZGVfc3RhdGUpCi0gICAgaW5jbHVkZV9zdGF0ZS5oZWFkZXJfdHlwZXNbbGlu
ZV9udW1iZXJdID0gaGVhZGVyX3R5cGUKLQotICAgICMgT25seSBwcm9jZWVkIGlmIHRoaXMgaXNu
J3QgYSBkdXBsaWNhdGUgaGVhZGVyLgotICAgIGlmIGR1cGxpY2F0ZV9oZWFkZXI6Ci0gICAgICAg
IHJldHVybgotCi0gICAgIyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IGhlYWRlcnMgYXBwZWFyIGlu
IHRoZSByaWdodCBvcmRlcjoKLSAgICAjIDEpIGZvciBpbXBsZW1lbnRhdGlvbiBmaWxlczogY29u
ZmlnLmgsIHByaW1hcnkgaGVhZGVyLCBibGFuayBsaW5lLCBhbHBoYWJldGljYWxseSBzb3J0ZWQK
LSAgICAjIDIpIGZvciBoZWFkZXIgZmlsZXM6IGFscGhhYmV0aWNhbGx5IHNvcnRlZAotICAgICMg
VGhlIGluY2x1ZGVfc3RhdGUgb2JqZWN0IGtlZXBzIHRyYWNrIG9mIHRoZSBsYXN0IHR5cGUgc2Vl
bgotICAgICMgYW5kIGNvbXBsYWlucyBpZiB0aGUgaGVhZGVyIHR5cGVzIGFyZSBvdXQgb2Ygb3Jk
ZXIgb3IgbWlzc2luZy4KLSAgICBlcnJvcl9tZXNzYWdlID0gaW5jbHVkZV9zdGF0ZS5jaGVja19u
ZXh0X2luY2x1ZGVfb3JkZXIoaGVhZGVyX3R5cGUsIGZpbGVfZXh0ZW5zaW9uID09ICJoIikKLQot
ICAgICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHdlIGhhdmUgYSBibGFuayBsaW5lIGFmdGVyIHByaW1h
cnkgaGVhZGVyLgotICAgIGlmIG5vdCBlcnJvcl9tZXNzYWdlIGFuZCBoZWFkZXJfdHlwZSA9PSBf
UFJJTUFSWV9IRUFERVI6Ci0gICAgICAgICBuZXh0X2xpbmUgPSBjbGVhbl9saW5lcy5yYXdfbGlu
ZXNbbGluZV9udW1iZXIgKyAxXQotICAgICAgICAgaWYgbm90IGlzX2JsYW5rX2xpbmUobmV4dF9s
aW5lKToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvaW5jbHVkZV9vcmRl
cicsIDQsCi0gICAgICAgICAgICAgICAgICAnWW91IHNob3VsZCBhZGQgYSBibGFuayBsaW5lIGFm
dGVyIGltcGxlbWVudGF0aW9uIGZpbGVcJ3Mgb3duIGhlYWRlci4nKQotCi0gICAgIyBDaGVjayB0
byBtYWtlIHN1cmUgYWxsIGhlYWRlcnMgYmVzaWRlcyBjb25maWcuaCBhbmQgdGhlIHByaW1hcnkg
aGVhZGVyIGFyZQotICAgICMgYWxwaGFiZXRpY2FsbHkgc29ydGVkLiBTa2lwIFF0J3MgbW9jIGZp
bGVzLgotICAgIGlmIG5vdCBlcnJvcl9tZXNzYWdlIGFuZCBoZWFkZXJfdHlwZSA9PSBfT1RIRVJf
SEVBREVSOgotICAgICAgICAgcHJldmlvdXNfbGluZV9udW1iZXIgPSBsaW5lX251bWJlciAtIDE7
Ci0gICAgICAgICBwcmV2aW91c19saW5lID0gY2xlYW5fbGluZXMubGluZXNbcHJldmlvdXNfbGlu
ZV9udW1iZXJdCi0gICAgICAgICBwcmV2aW91c19tYXRjaCA9IF9SRV9QQVRURVJOX0lOQ0xVREUu
c2VhcmNoKHByZXZpb3VzX2xpbmUpCi0gICAgICAgICB3aGlsZSAobm90IHByZXZpb3VzX21hdGNo
IGFuZCBwcmV2aW91c19saW5lX251bWJlciA+IDAKLSAgICAgICAgICAgICAgICBhbmQgbm90IHNl
YXJjaChyJ1xBKCNpZnwjaWZkZWZ8I2lmbmRlZnwjZWxzZXwjZWxpZnwjZW5kaWYpJywgcHJldmlv
dXNfbGluZSkpOgotICAgICAgICAgICAgcHJldmlvdXNfbGluZV9udW1iZXIgLT0gMTsKLSAgICAg
ICAgICAgIHByZXZpb3VzX2xpbmUgPSBjbGVhbl9saW5lcy5saW5lc1twcmV2aW91c19saW5lX251
bWJlcl0KLSAgICAgICAgICAgIHByZXZpb3VzX21hdGNoID0gX1JFX1BBVFRFUk5fSU5DTFVERS5z
ZWFyY2gocHJldmlvdXNfbGluZSkKLSAgICAgICAgIGlmIHByZXZpb3VzX21hdGNoOgotICAgICAg
ICAgICAgcHJldmlvdXNfaGVhZGVyX3R5cGUgPSBpbmNsdWRlX3N0YXRlLmhlYWRlcl90eXBlc1tw
cmV2aW91c19saW5lX251bWJlcl0KLSAgICAgICAgICAgIGlmIHByZXZpb3VzX2hlYWRlcl90eXBl
ID09IF9PVEhFUl9IRUFERVIgYW5kIHByZXZpb3VzX2xpbmUuc3RyaXAoKSA+IGxpbmUuc3RyaXAo
KToKLSAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL2luY2x1ZGVfb3Jk
ZXInLCA0LAotICAgICAgICAgICAgICAgICAgICAgICdBbHBoYWJldGljYWwgc29ydGluZyBwcm9i
bGVtLicpCi0KLSAgICBpZiBlcnJvcl9tZXNzYWdlOgotICAgICAgICBpZiBmaWxlX2V4dGVuc2lv
biA9PSAnaCc6Ci0gICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL2luY2x1ZGVf
b3JkZXInLCA0LAotICAgICAgICAgICAgICAgICAgJyVzIFNob3VsZCBiZTogYWxwaGFiZXRpY2Fs
bHkgc29ydGVkLicgJQotICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSkKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvaW5jbHVkZV9vcmRl
cicsIDQsCi0gICAgICAgICAgICAgICAgICAnJXMgU2hvdWxkIGJlOiBjb25maWcuaCwgcHJpbWFy
eSBoZWFkZXIsIGJsYW5rIGxpbmUsIGFuZCB0aGVuIGFscGhhYmV0aWNhbGx5IHNvcnRlZC4nICUK
LSAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UpCi0KLQotZGVmIGNoZWNrX2xhbmd1YWdl
KGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBpbmNs
dWRlX3N0YXRlLAotICAgICAgICAgICAgICAgICAgIGVycm9yKToKLSAgICAiIiJDaGVja3MgcnVs
ZXMgZnJvbSB0aGUgJ0MrKyBsYW5ndWFnZSBydWxlcycgc2VjdGlvbiBvZiBjcHBndWlkZS5odG1s
LgotCi0gICAgU29tZSBvZiB0aGVzZSBydWxlcyBhcmUgaGFyZCB0byB0ZXN0IChmdW5jdGlvbiBv
dmVybG9hZGluZywgdXNpbmcKLSAgICB1aW50MzIgaW5hcHByb3ByaWF0ZWx5KSwgYnV0IHdlIGRv
IHRoZSBiZXN0IHdlIGNhbi4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUg
b2YgdGhlIGN1cnJlbnQgZmlsZS4KLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMg
aW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVt
YmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgZmlsZV9leHRlbnNpb246IFRoZSBleHRl
bnNpb24gKHdpdGhvdXQgdGhlIGRvdCkgb2YgdGhlIGZpbGVuYW1lLgotICAgICAgaW5jbHVkZV9z
dGF0ZTogQW4gX0luY2x1ZGVTdGF0ZSBpbnN0YW5jZSBpbiB3aGljaCB0aGUgaGVhZGVycyBhcmUg
aW5zZXJ0ZWQuCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJy
b3JzIGZvdW5kLgotICAgICIiIgotICAgICMgSWYgdGhlIGxpbmUgaXMgZW1wdHkgb3IgY29uc2lz
dHMgb2YgZW50aXJlbHkgYSBjb21tZW50LCBubyBuZWVkIHRvCi0gICAgIyBjaGVjayBpdC4KLSAg
ICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXQotICAgIGlmIG5vdCBsaW5l
OgotICAgICAgICByZXR1cm4KLQotICAgIG1hdGNoZWQgPSBfUkVfUEFUVEVSTl9JTkNMVURFLnNl
YXJjaChsaW5lKQotICAgIGlmIG1hdGNoZWQ6Ci0gICAgICAgIGNoZWNrX2luY2x1ZGVfbGluZShm
aWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgaW5jbHVk
ZV9zdGF0ZSwgZXJyb3IpCi0gICAgICAgIHJldHVybgotCi0gICAgIyBGSVhNRTogZmlndXJlIG91
dCBpZiB0aGV5J3JlIHVzaW5nIGRlZmF1bHQgYXJndW1lbnRzIGluIGZuIHByb3RvLgotCi0gICAg
IyBDaGVjayB0byBzZWUgaWYgdGhleSdyZSB1c2luZyBhbiBjb252ZXJzaW9uIGZ1bmN0aW9uIGNh
c3QuCi0gICAgIyBJIGp1c3QgdHJ5IHRvIGNhcHR1cmUgdGhlIG1vc3QgY29tbW9uIGJhc2ljIHR5
cGVzLCB0aG91Z2ggdGhlcmUgYXJlIG1vcmUuCi0gICAgIyBQYXJhbWV0ZXJsZXNzIGNvbnZlcnNp
b24gZnVuY3Rpb25zLCBzdWNoIGFzIGJvb2woKSwgYXJlIGFsbG93ZWQgYXMgdGhleSBhcmUKLSAg
ICAjIHByb2JhYmx5IGEgbWVtYmVyIG9wZXJhdG9yIGRlY2xhcmF0aW9uIG9yIGRlZmF1bHQgY29u
c3RydWN0b3IuCi0gICAgbWF0Y2hlZCA9IHNlYXJjaCgKLSAgICAgICAgcidcYihpbnR8ZmxvYXR8
ZG91YmxlfGJvb2x8Y2hhcnxpbnQzMnx1aW50MzJ8aW50NjR8dWludDY0KVwoW14pXScsIGxpbmUp
Ci0gICAgaWYgbWF0Y2hlZDoKLSAgICAgICAgIyBnTW9jayBtZXRob2RzIGFyZSBkZWZpbmVkIHVz
aW5nIHNvbWUgdmFyaWFudCBvZiBNT0NLX01FVEhPRHgobmFtZSwgdHlwZSkKLSAgICAgICAgIyB3
aGVyZSB0eXBlIG1heSBiZSBmbG9hdCgpLCBpbnQoc3RyaW5nKSwgZXRjLiAgV2l0aG91dCBjb250
ZXh0IHRoZXkgYXJlCi0gICAgICAgICMgdmlydHVhbGx5IGluZGlzdGluZ3Vpc2hhYmxlIGZyb20g
aW50KHgpIGNhc3RzLgotICAgICAgICBpZiBub3QgbWF0Y2gocideXHMqTU9DS18oQ09OU1RfKT9N
RVRIT0RcZCsoX1QpP1woJywgbGluZSk6Ci0gICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwg
J3JlYWRhYmlsaXR5L2Nhc3RpbmcnLCA0LAotICAgICAgICAgICAgICAgICAgJ1VzaW5nIGRlcHJl
Y2F0ZWQgY2FzdGluZyBzdHlsZS4gICcKLSAgICAgICAgICAgICAgICAgICdVc2Ugc3RhdGljX2Nh
c3Q8JXM+KC4uLikgaW5zdGVhZCcgJQotICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5ncm91cCgx
KSkKLQotICAgIGNoZWNrX2Nfc3R5bGVfY2FzdChsaW5lX251bWJlciwgbGluZSwgY2xlYW5fbGlu
ZXMucmF3X2xpbmVzW2xpbmVfbnVtYmVyXSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXRp
Y19jYXN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgcidcKChpbnR8ZmxvYXR8ZG91YmxlfGJv
b2x8Y2hhcnx1P2ludCgxNnwzMnw2NCkpXCknLAotICAgICAgICAgICAgICAgICAgICAgICBlcnJv
cikKLSAgICAjIFRoaXMgZG9lc24ndCBjYXRjaCBhbGwgY2FzZXMuICBDb25zaWRlciAoY29uc3Qg
Y2hhciAqIGNvbnN0KSJoZWxsbyIuCi0gICAgY2hlY2tfY19zdHlsZV9jYXN0KGxpbmVfbnVtYmVy
LCBsaW5lLCBjbGVhbl9saW5lcy5yYXdfbGluZXNbbGluZV9udW1iZXJdLAotICAgICAgICAgICAg
ICAgICAgICAgICAncmVpbnRlcnByZXRfY2FzdCcsIHInXCgoXHcrXHM/XCorXHM/KVwpJywgZXJy
b3IpCi0KLSAgICAjIEluIGFkZGl0aW9uLCB3ZSBsb29rIGZvciBwZW9wbGUgdGFraW5nIHRoZSBh
ZGRyZXNzIG9mIGEgY2FzdC4gIFRoaXMKLSAgICAjIGlzIGRhbmdlcm91cyAtLSBjYXN0cyBjYW4g
YXNzaWduIHRvIHRlbXBvcmFyaWVzLCBzbyB0aGUgcG9pbnRlciBkb2Vzbid0Ci0gICAgIyBwb2lu
dCB3aGVyZSB5b3UgdGhpbmsuCi0gICAgaWYgc2VhcmNoKAotICAgICAgICByJygmXChbXildK1wp
W1x3KF0pfCgmKHN0YXRpY3xkeW5hbWljfHJlaW50ZXJwcmV0KV9jYXN0XGIpJywgbGluZSk6Ci0g
ICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS9jYXN0aW5nJywgNCwKLSAgICAgICAg
ICAgICAgKCdBcmUgeW91IHRha2luZyBhbiBhZGRyZXNzIG9mIGEgY2FzdD8gICcKLSAgICAgICAg
ICAgICAgICdUaGlzIGlzIGRhbmdlcm91czogY291bGQgYmUgYSB0ZW1wIHZhci4gICcKLSAgICAg
ICAgICAgICAgICdUYWtlIHRoZSBhZGRyZXNzIGJlZm9yZSBkb2luZyB0aGUgY2FzdCwgcmF0aGVy
IHRoYW4gYWZ0ZXInKSkKLQotICAgICMgQ2hlY2sgZm9yIHBlb3BsZSBkZWNsYXJpbmcgc3RhdGlj
L2dsb2JhbCBTVEwgc3RyaW5ncyBhdCB0aGUgdG9wIGxldmVsLgotICAgICMgVGhpcyBpcyBkYW5n
ZXJvdXMgYmVjYXVzZSB0aGUgQysrIGxhbmd1YWdlIGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0Ci0g
ICAgIyBnbG9iYWxzIHdpdGggY29uc3RydWN0b3JzIGFyZSBpbml0aWFsaXplZCBiZWZvcmUgdGhl
IGZpcnN0IGFjY2Vzcy4KLSAgICBtYXRjaGVkID0gbWF0Y2goCi0gICAgICAgIHInKCg/OnxzdGF0
aWMgKykoPzp8Y29uc3QgKykpc3RyaW5nICsoW2EtekEtWjAtOV86XSspXGIoLiopJywKLSAgICAg
ICAgbGluZSkKLSAgICAjIE1ha2Ugc3VyZSBpdCdzIG5vdCBhIGZ1bmN0aW9uLgotICAgICMgRnVu
Y3Rpb24gdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gbG9va3MgbGlrZTogInN0cmluZyBmb288VHlw
ZT4oLi4uIi4KLSAgICAjIENsYXNzIHRlbXBsYXRlIGRlZmluaXRpb25zIGxvb2sgbGlrZTogInN0
cmluZyBGb288VHlwZT46Ok1ldGhvZCguLi4iLgotICAgIGlmIG1hdGNoZWQgYW5kIG5vdCBtYXRj
aChyJ1xzKig8Lio+KT8oOjpbYS16QS1aMC05X10rKT9ccypcKChbXiJdfCQpJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5ncm91cCgzKSk6Ci0gICAgICAgIGVycm9yKGxp
bmVfbnVtYmVyLCAncnVudGltZS9zdHJpbmcnLCA0LAotICAgICAgICAgICAgICAnRm9yIGEgc3Rh
dGljL2dsb2JhbCBzdHJpbmcgY29uc3RhbnQsIHVzZSBhIEMgc3R5bGUgc3RyaW5nIGluc3RlYWQ6
ICcKLSAgICAgICAgICAgICAgJyIlc2NoYXIgJXNbXSIuJyAlCi0gICAgICAgICAgICAgIChtYXRj
aGVkLmdyb3VwKDEpLCBtYXRjaGVkLmdyb3VwKDIpKSkKLQotICAgICMgQ2hlY2sgdGhhdCB3ZSdy
ZSBub3QgdXNpbmcgUlRUSSBvdXRzaWRlIG9mIHRlc3RpbmcgY29kZS4KLSAgICBpZiBzZWFyY2go
cidcYmR5bmFtaWNfY2FzdDwnLCBsaW5lKToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdy
dW50aW1lL3J0dGknLCA1LAotICAgICAgICAgICAgICAnRG8gbm90IHVzZSBkeW5hbWljX2Nhc3Q8
Pi4gIElmIHlvdSBuZWVkIHRvIGNhc3Qgd2l0aGluIGEgY2xhc3MgJwotICAgICAgICAgICAgICAi
aGllcmFyY2h5LCB1c2Ugc3RhdGljX2Nhc3Q8PiB0byB1cGNhc3QuICBHb29nbGUgZG9lc24ndCBz
dXBwb3J0ICIKLSAgICAgICAgICAgICAgJ1JUVEkuJykKLQotICAgIGlmIHNlYXJjaChyJ1xiKFtB
LVphLXowLTlfXSpfKVwoXDFcKScsIGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251bWJlciwg
J3J1bnRpbWUvaW5pdCcsIDQsCi0gICAgICAgICAgICAgICdZb3Ugc2VlbSB0byBiZSBpbml0aWFs
aXppbmcgYSBtZW1iZXIgdmFyaWFibGUgd2l0aCBpdHNlbGYuJykKLQotICAgIGlmIGZpbGVfZXh0
ZW5zaW9uID09ICdoJzoKLSAgICAgICAgIyBGSVhNRTogY2hlY2sgdGhhdCAxLWFyZyBjb25zdHJ1
Y3RvcnMgYXJlIGV4cGxpY2l0LgotICAgICAgICAjICAgICAgICBIb3cgdG8gdGVsbCBpdCdzIGEg
Y29uc3RydWN0b3I/Ci0gICAgICAgICMgICAgICAgIChoYW5kbGVkIGluIGNoZWNrX2Zvcl9ub25f
c3RhbmRhcmRfY29uc3RydWN0cyBmb3Igbm93KQotICAgICAgICBwYXNzCi0KLSAgICAjIENoZWNr
IGlmIHBlb3BsZSBhcmUgdXNpbmcgdGhlIHZlcmJvdGVuIEMgYmFzaWMgdHlwZXMuICBUaGUgb25s
eSBleGNlcHRpb24KLSAgICAjIHdlIHJlZ3VsYXJseSBhbGxvdyBpcyAidW5zaWduZWQgc2hvcnQg
cG9ydCIgZm9yIHBvcnQuCi0gICAgaWYgc2VhcmNoKHInXGJzaG9ydCBwb3J0XGInLCBsaW5lKToK
LSAgICAgICAgaWYgbm90IHNlYXJjaChyJ1xidW5zaWduZWQgc2hvcnQgcG9ydFxiJywgbGluZSk6
Ci0gICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvaW50JywgNCwKLSAgICAg
ICAgICAgICAgICAgICdVc2UgInVuc2lnbmVkIHNob3J0IiBmb3IgcG9ydHMsIG5vdCAic2hvcnQi
JykKLQotICAgICMgV2hlbiBzbnByaW50ZiBpcyB1c2VkLCB0aGUgc2Vjb25kIGFyZ3VtZW50IHNo
b3VsZG4ndCBiZSBhIGxpdGVyYWwuCi0gICAgbWF0Y2hlZCA9IHNlYXJjaChyJ3NucHJpbnRmXHMq
XCgoW14sXSopLFxzKihbMC05XSopXHMqLCcsIGxpbmUpCi0gICAgaWYgbWF0Y2hlZDoKLSAgICAg
ICAgZXJyb3IobGluZV9udW1iZXIsICdydW50aW1lL3ByaW50ZicsIDMsCi0gICAgICAgICAgICAg
ICdJZiB5b3UgY2FuLCB1c2Ugc2l6ZW9mKCVzKSBpbnN0ZWFkIG9mICVzIGFzIHRoZSAybmQgYXJn
ICcKLSAgICAgICAgICAgICAgJ3RvIHNucHJpbnRmLicgJSAobWF0Y2hlZC5ncm91cCgxKSwgbWF0
Y2hlZC5ncm91cCgyKSkpCi0KLSAgICAjIENoZWNrIGlmIHNvbWUgdmVyYm90ZW4gQyBmdW5jdGlv
bnMgYXJlIGJlaW5nIHVzZWQuCi0gICAgaWYgc2VhcmNoKHInXGJzcHJpbnRmXGInLCBsaW5lKToK
LSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdydW50aW1lL3ByaW50ZicsIDUsCi0gICAgICAg
ICAgICAgICdOZXZlciB1c2Ugc3ByaW50Zi4gIFVzZSBzbnByaW50ZiBpbnN0ZWFkLicpCi0gICAg
bWF0Y2hlZCA9IHNlYXJjaChyJ1xiKHN0cmNweXxzdHJjYXQpXGInLCBsaW5lKQotICAgIGlmIG1h
dGNoZWQ6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS9wcmludGYnLCA0LAot
ICAgICAgICAgICAgICAnQWxtb3N0IGFsd2F5cywgc25wcmludGYgaXMgYmV0dGVyIHRoYW4gJXMn
ICUgbWF0Y2hlZC5ncm91cCgxKSkKLQotICAgIGlmIHNlYXJjaChyJ1xic3NjYW5mXGInLCBsaW5l
KToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdydW50aW1lL3ByaW50ZicsIDEsCi0gICAg
ICAgICAgICAgICdzc2NhbmYgY2FuIGJlIG9rLCBidXQgaXMgc2xvdyBhbmQgY2FuIG92ZXJmbG93
IGJ1ZmZlcnMuJykKLQotICAgICMgQ2hlY2sgZm9yIHN1c3BpY2lvdXMgdXNhZ2Ugb2YgImlmIiBs
aWtlCi0gICAgIyB9IGlmIChhID09IGIpIHsKLSAgICBpZiBzZWFyY2gocidcfVxzKmlmXHMqXCgn
LCBsaW5lKToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9icmFjZXMn
LCA0LAotICAgICAgICAgICAgICAnRGlkIHlvdSBtZWFuICJlbHNlIGlmIj8gSWYgbm90LCBzdGFy
dCBhIG5ldyBsaW5lIGZvciAiaWYiLicpCi0KLSAgICAjIENoZWNrIGZvciBwb3RlbnRpYWwgZm9y
bWF0IHN0cmluZyBidWdzIGxpa2UgcHJpbnRmKGZvbykuCi0gICAgIyBXZSBjb25zdHJhaW4gdGhl
IHBhdHRlcm4gbm90IHRvIHBpY2sgdGhpbmdzIGxpa2UgRG9jaWRGb3JQcmludGYoZm9vKS4KLSAg
ICAjIE5vdCBwZXJmZWN0IGJ1dCBpdCBjYW4gY2F0Y2ggcHJpbnRmKGZvby5jX3N0cigpKSBhbmQg
cHJpbnRmKGZvby0+Y19zdHIoKSkKLSAgICBtYXRjaGVkID0gcmUuc2VhcmNoKHInXGIoKD86c3Ry
aW5nKT9wcmludGYpXHMqXCgoW1x3LlwtPigpXSspXCknLCBsaW5lLCByZS5JKQotICAgIGlmIG1h
dGNoZWQ6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS9wcmludGYnLCA0LAot
ICAgICAgICAgICAgICAnUG90ZW50aWFsIGZvcm1hdCBzdHJpbmcgYnVnLiBEbyAlcygiJSVzIiwg
JXMpIGluc3RlYWQuJwotICAgICAgICAgICAgICAlIChtYXRjaGVkLmdyb3VwKDEpLCBtYXRjaGVk
Lmdyb3VwKDIpKSkKLQotICAgICMgQ2hlY2sgZm9yIHBvdGVudGlhbCBtZW1zZXQgYnVncyBsaWtl
IG1lbXNldChidWYsIHNpemVvZihidWYpLCAwKS4KLSAgICBtYXRjaGVkID0gc2VhcmNoKHInbWVt
c2V0XHMqXCgoW14sXSopLFxzKihbXixdKiksXHMqMFxzKlwpJywgbGluZSkKLSAgICBpZiBtYXRj
aGVkIGFuZCBub3QgbWF0Y2gociJeJyd8LT9bMC05XSt8MHhbMC05QS1GYS1mXSQiLCBtYXRjaGVk
Lmdyb3VwKDIpKToKLSAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdydW50aW1lL21lbXNldCcs
IDQsCi0gICAgICAgICAgICAgICdEaWQgeW91IG1lYW4gIm1lbXNldCglcywgMCwgJXMpIj8nCi0g
ICAgICAgICAgICAgICUgKG1hdGNoZWQuZ3JvdXAoMSksIG1hdGNoZWQuZ3JvdXAoMikpKQotCi0g
ICAgIyBEZXRlY3QgdmFyaWFibGUtbGVuZ3RoIGFycmF5cy4KLSAgICBtYXRjaGVkID0gbWF0Y2go
cidccyooLis6Oik/KFx3KykgW2Etel1cdypcWyguKyldOycsIGxpbmUpCi0gICAgaWYgKG1hdGNo
ZWQgYW5kIG1hdGNoZWQuZ3JvdXAoMikgIT0gJ3JldHVybicgYW5kIG1hdGNoZWQuZ3JvdXAoMikg
IT0gJ2RlbGV0ZScgYW5kCi0gICAgICAgIG1hdGNoZWQuZ3JvdXAoMykuZmluZCgnXScpID09IC0x
KToKLSAgICAgICAgIyBTcGxpdCB0aGUgc2l6ZSB1c2luZyBzcGFjZSBhbmQgYXJpdGhtZXRpYyBv
cGVyYXRvcnMgYXMgZGVsaW1pdGVycy4KLSAgICAgICAgIyBJZiBhbnkgb2YgdGhlIHJlc3VsdGlu
ZyB0b2tlbnMgYXJlIG5vdCBjb21waWxlIHRpbWUgY29uc3RhbnRzIHRoZW4KLSAgICAgICAgIyBy
ZXBvcnQgdGhlIGVycm9yLgotICAgICAgICB0b2tlbnMgPSByZS5zcGxpdChyJ1xzfFwrfFwtfFwq
fFwvfDw8fD4+XScsIG1hdGNoZWQuZ3JvdXAoMykpCi0gICAgICAgIGlzX2NvbnN0ID0gVHJ1ZQot
ICAgICAgICBza2lwX25leHQgPSBGYWxzZQotICAgICAgICBmb3IgdG9rIGluIHRva2VuczoKLSAg
ICAgICAgICAgIGlmIHNraXBfbmV4dDoKLSAgICAgICAgICAgICAgICBza2lwX25leHQgPSBGYWxz
ZQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIGlmIHNlYXJjaChyJ3Np
emVvZlwoLitcKScsIHRvayk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg
IGlmIHNlYXJjaChyJ2FycmF5c2l6ZVwoXHcrXCknLCB0b2spOgotICAgICAgICAgICAgICAgIGNv
bnRpbnVlCi0KLSAgICAgICAgICAgIHRvayA9IHRvay5sc3RyaXAoJygnKQotICAgICAgICAgICAg
dG9rID0gdG9rLnJzdHJpcCgnKScpCi0gICAgICAgICAgICBpZiBub3QgdG9rOgotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBtYXRjaChyJ1xkKycsIHRvayk6Ci0gICAg
ICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIG1hdGNoKHInMFt4WF1bMC05YS1m
QS1GXSsnLCB0b2spOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBt
YXRjaChyJ2tbQS1aMC05XVx3KicsIHRvayk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAg
ICAgICAgICAgIGlmIG1hdGNoKHInKC4rOjopP2tbQS1aMC05XVx3KicsIHRvayk6Ci0gICAgICAg
ICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIG1hdGNoKHInKC4rOjopP1tBLVpdW0Et
WjAtOV9dKicsIHRvayk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICMg
QSBjYXRjaCBhbGwgZm9yIHRyaWNreSBzaXplb2YgY2FzZXMsIGluY2x1ZGluZyAnc2l6ZW9mIGV4
cHJlc3Npb24nLAotICAgICAgICAgICAgIyAnc2l6ZW9mKCp0eXBlKScsICdzaXplb2YoY29uc3Qg
dHlwZSknLCAnc2l6ZW9mKHN0cnVjdCBTdHJ1Y3ROYW1lKScKLSAgICAgICAgICAgICMgcmVxdWly
ZXMgc2tpcHBpbmcgdGhlIG5leHQgdG9rZW4gYmVjYXN1ZSB3ZSBzcGxpdCBvbiAnICcgYW5kICcq
Jy4KLSAgICAgICAgICAgIGlmIHRvay5zdGFydHN3aXRoKCdzaXplb2YnKToKLSAgICAgICAgICAg
ICAgICBza2lwX25leHQgPSBUcnVlCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAg
ICAgIGlzX2NvbnN0ID0gRmFsc2UKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIG5vdCBp
c19jb25zdDoKLSAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS9hcnJheXMn
LCAxLAotICAgICAgICAgICAgICAgICAgJ0RvIG5vdCB1c2UgdmFyaWFibGUtbGVuZ3RoIGFycmF5
cy4gIFVzZSBhbiBhcHByb3ByaWF0ZWx5IG5hbWVkICcKLSAgICAgICAgICAgICAgICAgICIoJ2sn
IGZvbGxvd2VkIGJ5IENhbWVsQ2FzZSkgY29tcGlsZS10aW1lIGNvbnN0YW50IGZvciB0aGUgc2l6
ZS4iKQotCi0gICAgIyBDaGVjayBmb3IgdXNlIG9mIHVubmFtZWQgbmFtZXNwYWNlcyBpbiBoZWFk
ZXIgZmlsZXMuICBSZWdpc3RyYXRpb24KLSAgICAjIG1hY3JvcyBhcmUgdHlwaWNhbGx5IE9LLCBz
byB3ZSBhbGxvdyB1c2Ugb2YgIm5hbWVzcGFjZSB7IiBvbiBsaW5lcwotICAgICMgdGhhdCBlbmQg
d2l0aCBiYWNrc2xhc2hlcy4KLSAgICBpZiAoZmlsZV9leHRlbnNpb24gPT0gJ2gnCi0gICAgICAg
IGFuZCBzZWFyY2gocidcYm5hbWVzcGFjZVxzKnsnLCBsaW5lKQotICAgICAgICBhbmQgbGluZVst
MV0gIT0gJ1xcJyk6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvbmFtZXNwYWNl
cycsIDQsCi0gICAgICAgICAgICAgICdEbyBub3QgdXNlIHVubmFtZWQgbmFtZXNwYWNlcyBpbiBo
ZWFkZXIgZmlsZXMuICBTZWUgJwotICAgICAgICAgICAgICAnaHR0cDovL2dvb2dsZS1zdHlsZWd1
aWRlLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9jcHBndWlkZS54bWwjTmFtZXNwYWNlcycKLSAg
ICAgICAgICAgICAgJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKQotCi0gICAgY2hlY2tfaWRlbnRp
Zmllcl9uYW1lX2luX2RlY2xhcmF0aW9uKGZpbGVuYW1lLCBsaW5lX251bWJlciwgbGluZSwgZXJy
b3IpCi0KLQotZGVmIGNoZWNrX2lkZW50aWZpZXJfbmFtZV9pbl9kZWNsYXJhdGlvbihmaWxlbmFt
ZSwgbGluZV9udW1iZXIsIGxpbmUsIGVycm9yKToKLSAgICAiIiJDaGVja3MgaWYgaWRlbnRpZmll
ciBuYW1lcyBjb250YWluIGFueSB1bmRlcnNjb3Jlcy4KLQotICAgIEFzIGlkZW50aWZpZXJzIGlu
IGxpYnJhcmllcyB3ZSBhcmUgdXNpbmcgaGF2ZSBhIGJ1bmNoIG9mCi0gICAgdW5kZXJzY29yZXMs
IHdlIG9ubHkgd2FybiBhYm91dCB0aGUgZGVjbGFyYXRpb25zIG9mIGlkZW50aWZpZXJzCi0gICAg
YW5kIGRvbid0IGNoZWNrIHVzZSBvZiBpZGVudGlmaWVycy4KLQotICAgIEFyZ3M6Ci0gICAgICBm
aWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVy
OiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgbGluZTogVGhlIGxpbmUg
b2YgY29kZSB0byBjaGVjay4KLSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRo
IGFueSBlcnJvcnMgZm91bmQuCi0gICAgIiIiCi0gICAgIyBXZSBkb24ndCBjaGVjayBhIHJldHVy
biBzdGF0ZW1lbnQuCi0gICAgaWYgbWF0Y2gocidccyoocmV0dXJufGRlbGV0ZSlcYicsIGxpbmUp
OgotICAgICAgICByZXR1cm4KLQotICAgICMgQmFzaWNhbGx5LCBhIGRlY2xhcmF0aW9uIGlzIGEg
dHlwZSBuYW1lIGZvbGxvd2VkIGJ5IHdoaXRlc3BhY2VzCi0gICAgIyBmb2xsb3dlZCBieSBhbiBp
ZGVudGlmaWVyLiBUaGUgdHlwZSBuYW1lIGNhbiBiZSBjb21wbGljYXRlZAotICAgICMgZHVlIHRv
IHR5cGUgYWRqZWN0aXZlcyBhbmQgdGVtcGxhdGVzLiBXZSByZW1vdmUgdGhlbSBmaXJzdCB0bwot
ICAgICMgc2ltcGxpZnkgdGhlIHByb2Nlc3MgdG8gZmluZCBkZWNsYXJhdGlvbnMgb2YgaWRlbnRp
ZmllcnMuCi0KLSAgICAjIENvbnZlcnQgImxvbmcgbG9uZyIsICJsb25nIGRvdWJsZSIsIGFuZCAi
bG9uZyBsb25nIGludCIgdG8KLSAgICAjIHNpbXBsZSB0eXBlcywgYnV0IGRvbid0IHJlbW92ZSBz
aW1wbGUgImxvbmciLgotICAgIGxpbmUgPSBzdWIocidsb25nIChsb25nICk/KD89bG9uZ3xkb3Vi
bGV8aW50KScsICcnLCBsaW5lKQotICAgICMgQ29udmVydCB1bnNpZ25lZC9zaWduZWQgdHlwZXMg
dG8gc2ltcGxlIHR5cGVzLCB0b28uCi0gICAgbGluZSA9IHN1YihyJyh1bnNpZ25lZHxzaWduZWQp
ICg/PWNoYXJ8c2hvcnR8aW50fGxvbmcpJywgJycsIGxpbmUpCi0gICAgbGluZSA9IHN1YihyJ1xi
KGlubGluZXx1c2luZ3xzdGF0aWN8Y29uc3R8dm9sYXRpbGV8YXV0b3xyZWdpc3RlcnxleHRlcm58
dHlwZWRlZnxyZXN0cmljdHxzdHJ1Y3R8Y2xhc3N8dmlydHVhbCkoPz1cVyknLCAnJywgbGluZSkK
LQotICAgICMgUmVtb3ZlIGFsbCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGJ5IHJlbW92aW5nIG1hdGNo
aW5nIDwgYW5kID4uCi0gICAgIyBMb29wIHVudGlsIG5vIHRlbXBsYXRlcyBhcmUgcmVtb3ZlZCB0
byByZW1vdmUgbmVzdGVkIHRlbXBsYXRlcy4KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBsaW5l
LCBudW1iZXJfb2ZfcmVwbGFjZW1lbnRzID0gc3VibihyJzwoW1x3XHM6XXw6OikrXHMqWyomXSpc
cyo+JywgJycsIGxpbmUpCi0gICAgICAgIGlmIG5vdCBudW1iZXJfb2ZfcmVwbGFjZW1lbnRzOgot
ICAgICAgICAgICAgYnJlYWsKLQotICAgICMgRGVjbGFyYXRpb25zIG9mIGxvY2FsIHZhcmlhYmxl
cyBjYW4gYmUgaW4gY29uZGl0aW9uIGV4cHJlc3Npb25zCi0gICAgIyBvZiBjb250cm9sIGZsb3cg
c3RhdGVtZW50cyAoZS5nLiwgImlmIChSZW5kZXJPYmplY3QqIHAgPSBvLT5wYXJlbnQoKSkiKS4K
LSAgICAjIFdlIHJlbW92ZSB0aGUga2V5d29yZHMgYW5kIHRoZSBmaXJzdCBwYXJlbnRoZXNpcy4K
LSAgICAjCi0gICAgIyBEZWNsYXJhdGlvbnMgaW4gIndoaWxlIiwgImlmIiwgYW5kICJzd2l0Y2gi
IGFyZSBkaWZmZXJlbnQgZnJvbQotICAgICMgb3RoZXIgZGVjbGFyYXRpb25zIGluIHR3byBhc3Bl
Y3RzOgotICAgICMKLSAgICAjIC0gVGhlcmUgY2FuIGJlIG9ubHkgb25lIGRlY2xhcmF0aW9uIGJl
dHdlZW4gdGhlIHBhcmVudGhlc2VzLgotICAgICMgICAoaS5lLiwgeW91IGNhbm5vdCB3cml0ZSAi
aWYgKGludCBpID0gMCwgaiA9IDEpIHt9IikKLSAgICAjIC0gVGhlIHZhcmlhYmxlIG11c3QgYmUg
aW5pdGlhbGl6ZWQuCi0gICAgIyAgIChpLmUuLCB5b3UgY2Fubm90IHdyaXRlICJpZiAoaW50IGkp
IHt9IikKLSAgICAjCi0gICAgIyBhbmQgd2Ugd2lsbCBuZWVkIGRpZmZlcmVudCB0cmVhdG1lbnRz
IGZvciB0aGVtLgotICAgIGxpbmUgPSBzdWIocideXHMqZm9yXHMqXCgnLCAnJywgbGluZSkKLSAg
ICBsaW5lLCBjb250cm9sX3N0YXRlbWVudCA9IHN1Ym4ocideXHMqKHdoaWxlfGVsc2UgaWZ8aWZ8
c3dpdGNoKVxzKlwoJywgJycsIGxpbmUpCi0KLSAgICAjIERldGVjdCB2YXJpYWJsZSBhbmQgZnVu
Y3Rpb25zLgotICAgIHR5cGVfcmVnZXhwID0gcidcdyhbXHddfFxzKlsqJl1ccyp8OjopKycKLSAg
ICBpZGVudGlmaWVyX3JlZ2V4cCA9IHInKD9QPGlkZW50aWZpZXI+W1x3Ol0rKScKLSAgICBtYXli
ZV9iaXRmaWVsZF9yZWdleHAgPSByJyg6XHMqXGQrXHMqKT8nCi0gICAgY2hhcmFjdGVyX2FmdGVy
X2lkZW50aWZpZXJfcmVnZXhwID0gcicoP1A8Y2hhcmFjdGVyX2FmdGVyX2lkZW50aWZpZXI+W1s7
KCk9LF0pKD8hPSknCi0gICAgZGVjbGFyYXRpb25fd2l0aG91dF90eXBlX3JlZ2V4cCA9IHInXHMq
JyArIGlkZW50aWZpZXJfcmVnZXhwICsgcidccyonICsgbWF5YmVfYml0ZmllbGRfcmVnZXhwICsg
Y2hhcmFjdGVyX2FmdGVyX2lkZW50aWZpZXJfcmVnZXhwCi0gICAgZGVjbGFyYXRpb25fd2l0aF90
eXBlX3JlZ2V4cCA9IHInXHMqJyArIHR5cGVfcmVnZXhwICsgcidccycgKyBkZWNsYXJhdGlvbl93
aXRob3V0X3R5cGVfcmVnZXhwCi0gICAgaXNfZnVuY3Rpb25fYXJndW1lbnRzID0gRmFsc2UKLSAg
ICBudW1iZXJfb2ZfaWRlbnRpZmllcnMgPSAwCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgIyBJ
ZiB3ZSBhcmUgc2VlaW5nIHRoZSBmaXJzdCBpZGVudGlmaWVyIG9yIGFyZ3VtZW50cyBvZiBhCi0g
ICAgICAgICMgZnVuY3Rpb24sIHRoZXJlIHNob3VsZCBiZSBhIHR5cGUgbmFtZSBiZWZvcmUgYW4g
aWRlbnRpZmllci4KLSAgICAgICAgaWYgbm90IG51bWJlcl9vZl9pZGVudGlmaWVycyBvciBpc19m
dW5jdGlvbl9hcmd1bWVudHM6Ci0gICAgICAgICAgICBkZWNsYXJhdGlvbl9yZWdleHAgPSBkZWNs
YXJhdGlvbl93aXRoX3R5cGVfcmVnZXhwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkZWNs
YXJhdGlvbl9yZWdleHAgPSBkZWNsYXJhdGlvbl93aXRob3V0X3R5cGVfcmVnZXhwCi0KLSAgICAg
ICAgbWF0Y2hlZCA9IG1hdGNoKGRlY2xhcmF0aW9uX3JlZ2V4cCwgbGluZSkKLSAgICAgICAgaWYg
bm90IG1hdGNoZWQ6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWRlbnRpZmllciA9IG1h
dGNoZWQuZ3JvdXAoJ2lkZW50aWZpZXInKQotICAgICAgICBjaGFyYWN0ZXJfYWZ0ZXJfaWRlbnRp
ZmllciA9IG1hdGNoZWQuZ3JvdXAoJ2NoYXJhY3Rlcl9hZnRlcl9pZGVudGlmaWVyJykKLQotICAg
ICAgICAjIElmIHdlIHJlbW92ZWQgYSBub24tZm9yLWNvbnRyb2wgc3RhdGVtZW50LCB0aGUgY2hh
cmFjdGVyIGFmdGVyCi0gICAgICAgICMgdGhlIGlkZW50aWZpZXIgc2hvdWxkIGJlICc9Jy4gV2l0
aCB0aGlzIHJ1bGUsIHdlIGNhbiBhdm9pZAotICAgICAgICAjIHdhcm5pbmcgZm9yIGNhc2VzIGxp
a2UgImlmICh2YWwgJiBJTlRfTUFYKSB7Ii4KLSAgICAgICAgaWYgY29udHJvbF9zdGF0ZW1lbnQg
YW5kIGNoYXJhY3Rlcl9hZnRlcl9pZGVudGlmaWVyICE9ICc9JzoKLSAgICAgICAgICAgIHJldHVy
bgotCi0gICAgICAgIGlzX2Z1bmN0aW9uX2FyZ3VtZW50cyA9IGlzX2Z1bmN0aW9uX2FyZ3VtZW50
cyBvciBjaGFyYWN0ZXJfYWZ0ZXJfaWRlbnRpZmllciA9PSAnKCcKLQotICAgICAgICAjIFJlbW92
ZSAibV8iIGFuZCAic18iIHRvIGFsbG93IHRoZW0uCi0gICAgICAgIG1vZGlmaWVkX2lkZW50aWZp
ZXIgPSBzdWIocicoXnwoPzw9OjopKVttc11fJywgJycsIGlkZW50aWZpZXIpCi0gICAgICAgIGlm
IG1vZGlmaWVkX2lkZW50aWZpZXIuZmluZCgnXycpID49IDA6Ci0gICAgICAgICAgICAjIFZhcmlv
dXMgZXhjZXB0aW9ucyB0byB0aGUgcnVsZTogSmF2YVNjcmlwdCBvcCBjb2RlcyBmdW5jdGlvbnMs
IGNvbnN0X2l0ZXJhdG9yLgotICAgICAgICAgICAgaWYgKG5vdCAoZmlsZW5hbWUuZmluZCgnSmF2
YVNjcmlwdENvcmUnKSA+PSAwIGFuZCBtb2RpZmllZF9pZGVudGlmaWVyLmZpbmQoJ19vcF8nKSA+
PSAwKQotICAgICAgICAgICAgICAgIGFuZCBub3QgbW9kaWZpZWRfaWRlbnRpZmllci5zdGFydHN3
aXRoKCd0c3RfJykKLSAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIu
c3RhcnRzd2l0aCgnd2Via2l0X2RvbV9vYmplY3RfJykKLSAgICAgICAgICAgICAgICBhbmQgbm90
IG1vZGlmaWVkX2lkZW50aWZpZXIuc3RhcnRzd2l0aCgncXRfJykKLSAgICAgICAgICAgICAgICBh
bmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIuZmluZCgnOjpxdF8nKSA+PSAwCi0gICAgICAgICAg
ICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyID09ICJjb25zdF9pdGVyYXRvciIpOgot
ICAgICAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvbmFtaW5nJywg
NCwgaWRlbnRpZmllciArICIgaXMgaW5jb3JyZWN0bHkgbmFtZWQuIERvbid0IHVzZSB1bmRlcnNj
b3JlcyBpbiB5b3VyIGlkZW50aWZpZXIgbmFtZXMuIikKLQotICAgICAgICAjIFRoZXJlIGNhbiBi
ZSBvbmx5IG9uZSBkZWNsYXJhdGlvbiBpbiBub24tZm9yLWNvbnRyb2wgc3RhdGVtZW50cy4KLSAg
ICAgICAgaWYgY29udHJvbF9zdGF0ZW1lbnQ6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAg
IyBXZSBzaG91bGQgY29udGludWUgY2hlY2tpbmcgaWYgdGhpcyBpcyBhIGZ1bmN0aW9uCi0gICAg
ICAgICMgZGVjbGFyYXRpb24gYmVjYXVzZSB3ZSBuZWVkIHRvIGNoZWNrIGl0cyBhcmd1bWVudHMu
Ci0gICAgICAgICMgQWxzbywgd2UgbmVlZCB0byBjaGVjayBtdWx0aXBsZSBkZWNsYXJhdGlvbnMu
Ci0gICAgICAgIGlmIGNoYXJhY3Rlcl9hZnRlcl9pZGVudGlmaWVyICE9ICcoJyBhbmQgY2hhcmFj
dGVyX2FmdGVyX2lkZW50aWZpZXIgIT0gJywnOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAg
ICAgbnVtYmVyX29mX2lkZW50aWZpZXJzICs9IDEKLSAgICAgICAgbGluZSA9IGxpbmVbbWF0Y2hl
ZC5lbmQoKTpdCi0KLQotZGVmIGNoZWNrX2Nfc3R5bGVfY2FzdChsaW5lX251bWJlciwgbGluZSwg
cmF3X2xpbmUsIGNhc3RfdHlwZSwgcGF0dGVybiwKLSAgICAgICAgICAgICAgICAgICAgICAgZXJy
b3IpOgotICAgICIiIkNoZWNrcyBmb3IgYSBDLXN0eWxlIGNhc3QgYnkgbG9va2luZyBmb3IgdGhl
IHBhdHRlcm4uCi0KLSAgICBUaGlzIGFsc28gaGFuZGxlcyBzaXplb2YodHlwZSkgd2FybmluZ3Ms
IGR1ZSB0byBzaW1pbGFyaXR5IG9mIGNvbnRlbnQuCi0KLSAgICBBcmdzOgotICAgICAgbGluZV9u
dW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCi0gICAgICBsaW5lOiBUaGUg
bGluZSBvZiBjb2RlIHRvIGNoZWNrLgotICAgICAgcmF3X2xpbmU6IFRoZSByYXcgbGluZSBvZiBj
b2RlIHRvIGNoZWNrLCB3aXRoIGNvbW1lbnRzLgotICAgICAgY2FzdF90eXBlOiBUaGUgc3RyaW5n
IGZvciB0aGUgQysrIGNhc3QgdG8gcmVjb21tZW5kLiAgVGhpcyBpcyBlaXRoZXIKLSAgICAgICAg
ICAgICAgICAgcmVpbnRlcnByZXRfY2FzdCBvciBzdGF0aWNfY2FzdCwgZGVwZW5kaW5nLgotICAg
ICAgcGF0dGVybjogVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIHRvIGZpbmQgQy1zdHlsZSBj
YXN0cy4KLSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMg
Zm91bmQuCi0gICAgIiIiCi0gICAgbWF0Y2hlZCA9IHNlYXJjaChwYXR0ZXJuLCBsaW5lKQotICAg
IGlmIG5vdCBtYXRjaGVkOgotICAgICAgICByZXR1cm4KLQotICAgICMgZS5nLiwgc2l6ZW9mKGlu
dCkKLSAgICBzaXplb2ZfbWF0Y2ggPSBtYXRjaChyJy4qc2l6ZW9mXHMqJCcsIGxpbmVbMDptYXRj
aGVkLnN0YXJ0KDEpIC0gMV0pCi0gICAgaWYgc2l6ZW9mX21hdGNoOgotICAgICAgICBlcnJvcihs
aW5lX251bWJlciwgJ3J1bnRpbWUvc2l6ZW9mJywgMSwKLSAgICAgICAgICAgICAgJ1VzaW5nIHNp
emVvZih0eXBlKS4gIFVzZSBzaXplb2YodmFybmFtZSkgaW5zdGVhZCBpZiBwb3NzaWJsZScpCi0g
ICAgICAgIHJldHVybgotCi0gICAgcmVtYWluZGVyID0gbGluZVttYXRjaGVkLmVuZCgwKTpdCi0K
LSAgICAjIFRoZSBjbG9zZSBwYXJlbiBpcyBmb3IgZnVuY3Rpb24gcG9pbnRlcnMgYXMgYXJndW1l
bnRzIHRvIGEgZnVuY3Rpb24uCi0gICAgIyBlZywgdm9pZCBmb28odm9pZCAoKmJhcikoaW50KSk7
Ci0gICAgIyBUaGUgc2VtaWNvbG9uIGNoZWNrIGlzIGEgbW9yZSBiYXNpYyBmdW5jdGlvbiBjaGVj
azsgYWxzbyBwb3NzaWJseSBhCi0gICAgIyBmdW5jdGlvbiBwb2ludGVyIHR5cGVkZWYuCi0gICAg
IyBlZywgdm9pZCBmb28oaW50KTsgb3Igdm9pZCBmb28oaW50KSBjb25zdDsKLSAgICAjIFRoZSBl
cXVhbHMgY2hlY2sgaXMgZm9yIGZ1bmN0aW9uIHBvaW50ZXIgYXNzaWdubWVudC4KLSAgICAjIGVn
LCB2b2lkICooKmZvbykoaW50KSA9IC4uLgotICAgICMKLSAgICAjIFJpZ2h0IG5vdywgdGhpcyB3
aWxsIG9ubHkgY2F0Y2ggY2FzZXMgd2hlcmUgdGhlcmUncyBhIHNpbmdsZSBhcmd1bWVudCwgYW5k
Ci0gICAgIyBpdCdzIHVubmFtZWQuICBJdCBzaG91bGQgcHJvYmFibHkgYmUgZXhwYW5kZWQgdG8g
Y2hlY2sgZm9yIG11bHRpcGxlCi0gICAgIyBhcmd1bWVudHMgd2l0aCBzb21lIHVubmFtZWQuCi0g
ICAgZnVuY3Rpb25fbWF0Y2ggPSBtYXRjaChyJ1xzKihcKXw9fChjb25zdCk/XHMqKDt8XHt8dGhy
b3dcKFwpKSknLCByZW1haW5kZXIpCi0gICAgaWYgZnVuY3Rpb25fbWF0Y2g6Ci0gICAgICAgIGlm
IChub3QgZnVuY3Rpb25fbWF0Y2guZ3JvdXAoMykKLSAgICAgICAgICAgIG9yIGZ1bmN0aW9uX21h
dGNoLmdyb3VwKDMpID09ICc7JwotICAgICAgICAgICAgb3IgcmF3X2xpbmUuZmluZCgnLyonKSA8
IDApOgotICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9mdW5jdGlv
bicsIDMsCi0gICAgICAgICAgICAgICAgICAnQWxsIHBhcmFtZXRlcnMgc2hvdWxkIGJlIG5hbWVk
IGluIGEgZnVuY3Rpb24nKQotICAgICAgICByZXR1cm4KLQotICAgICMgQXQgdGhpcyBwb2ludCwg
YWxsIHRoYXQgc2hvdWxkIGJlIGxlZnQgaXMgYWN0dWFsIGNhc3RzLgotICAgIGVycm9yKGxpbmVf
bnVtYmVyLCAncmVhZGFiaWxpdHkvY2FzdGluZycsIDQsCi0gICAgICAgICAgJ1VzaW5nIEMtc3R5
bGUgY2FzdC4gIFVzZSAlczwlcz4oLi4uKSBpbnN0ZWFkJyAlCi0gICAgICAgICAgKGNhc3RfdHlw
ZSwgbWF0Y2hlZC5ncm91cCgxKSkpCi0KLQotX0hFQURFUlNfQ09OVEFJTklOR19URU1QTEFURVMg
PSAoCi0gICAgKCc8ZGVxdWU+JywgKCdkZXF1ZScsKSksCi0gICAgKCc8ZnVuY3Rpb25hbD4nLCAo
J3VuYXJ5X2Z1bmN0aW9uJywgJ2JpbmFyeV9mdW5jdGlvbicsCi0gICAgICAgICAgICAgICAgICAg
ICAgJ3BsdXMnLCAnbWludXMnLCAnbXVsdGlwbGllcycsICdkaXZpZGVzJywgJ21vZHVsdXMnLAot
ICAgICAgICAgICAgICAgICAgICAgICduZWdhdGUnLAotICAgICAgICAgICAgICAgICAgICAgICdl
cXVhbF90bycsICdub3RfZXF1YWxfdG8nLCAnZ3JlYXRlcicsICdsZXNzJywKLSAgICAgICAgICAg
ICAgICAgICAgICAnZ3JlYXRlcl9lcXVhbCcsICdsZXNzX2VxdWFsJywKLSAgICAgICAgICAgICAg
ICAgICAgICAnbG9naWNhbF9hbmQnLCAnbG9naWNhbF9vcicsICdsb2dpY2FsX25vdCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgJ3VuYXJ5X25lZ2F0ZScsICdub3QxJywgJ2JpbmFyeV9uZWdhdGUn
LCAnbm90MicsCi0gICAgICAgICAgICAgICAgICAgICAgJ2JpbmQxc3QnLCAnYmluZDJuZCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb24nLAotICAgICAg
ICAgICAgICAgICAgICAgICdwb2ludGVyX3RvX2JpbmFyeV9mdW5jdGlvbicsCi0gICAgICAgICAg
ICAgICAgICAgICAgJ3B0cl9mdW4nLAotICAgICAgICAgICAgICAgICAgICAgICdtZW1fZnVuX3Qn
LCAnbWVtX2Z1bicsICdtZW1fZnVuMV90JywgJ21lbV9mdW4xX3JlZl90JywKLSAgICAgICAgICAg
ICAgICAgICAgICAnbWVtX2Z1bl9yZWZfdCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ2NvbnN0
X21lbV9mdW5fdCcsICdjb25zdF9tZW1fZnVuMV90JywKLSAgICAgICAgICAgICAgICAgICAgICAn
Y29uc3RfbWVtX2Z1bl9yZWZfdCcsICdjb25zdF9tZW1fZnVuMV9yZWZfdCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgJ21lbV9mdW5fcmVmJywKLSAgICAgICAgICAgICAgICAgICAgICkpLAotICAg
ICgnPGxpbWl0cz4nLCAoJ251bWVyaWNfbGltaXRzJywpKSwKLSAgICAoJzxsaXN0PicsICgnbGlz
dCcsKSksCi0gICAgKCc8bWFwPicsICgnbWFwJywgJ211bHRpbWFwJywpKSwKLSAgICAoJzxtZW1v
cnk+JywgKCdhbGxvY2F0b3InLCkpLAotICAgICgnPHF1ZXVlPicsICgncXVldWUnLCAncHJpb3Jp
dHlfcXVldWUnLCkpLAotICAgICgnPHNldD4nLCAoJ3NldCcsICdtdWx0aXNldCcsKSksCi0gICAg
KCc8c3RhY2s+JywgKCdzdGFjaycsKSksCi0gICAgKCc8c3RyaW5nPicsICgnY2hhcl90cmFpdHMn
LCAnYmFzaWNfc3RyaW5nJywpKSwKLSAgICAoJzx1dGlsaXR5PicsICgncGFpcicsKSksCi0gICAg
KCc8dmVjdG9yPicsICgndmVjdG9yJywpKSwKLQotICAgICMgZ2NjIGV4dGVuc2lvbnMuCi0gICAg
IyBOb3RlOiBzdGQ6Omhhc2ggaXMgdGhlaXIgaGFzaCwgOjpoYXNoIGlzIG91ciBoYXNoCi0gICAg
KCc8aGFzaF9tYXA+JywgKCdoYXNoX21hcCcsICdoYXNoX211bHRpbWFwJywpKSwKLSAgICAoJzxo
YXNoX3NldD4nLCAoJ2hhc2hfc2V0JywgJ2hhc2hfbXVsdGlzZXQnLCkpLAotICAgICgnPHNsaXN0
PicsICgnc2xpc3QnLCkpLAotICAgICkKLQotX0hFQURFUlNfQUNDRVBURURfQlVUX05PVF9QUk9N
T1RFRCA9IHsKLSAgICAjIFdlIGNhbiB0cnVzdCB3aXRoIHJlYXNvbmFibGUgY29uZmlkZW5jZSB0
aGF0IG1hcCBnaXZlcyB1cyBwYWlyPD4sIHRvby4KLSAgICAncGFpcjw+JzogKCdtYXAnLCAnbXVs
dGltYXAnLCAnaGFzaF9tYXAnLCAnaGFzaF9tdWx0aW1hcCcpCi19Ci0KLV9SRV9QQVRURVJOX1NU
UklORyA9IHJlLmNvbXBpbGUocidcYnN0cmluZ1xiJykKLQotX3JlX3BhdHRlcm5fYWxnb3JpdGht
X2hlYWRlciA9IFtdCi1mb3IgX3RlbXBsYXRlIGluICgnY29weScsICdtYXgnLCAnbWluJywgJ21p
bl9lbGVtZW50JywgJ3NvcnQnLCAnc3dhcCcsCi0gICAgICAgICAgICAgICAgICAndHJhbnNmb3Jt
Jyk6Ci0gICAgIyBNYXRjaCBtYXg8dHlwZT4oLi4uLCAuLi4pLCBtYXgoLi4uLCAuLi4pLCBidXQg
bm90IGZvby0+bWF4LCBmb28ubWF4IG9yCi0gICAgIyB0eXBlOjptYXgoKS4KLSAgICBfcmVfcGF0
dGVybl9hbGdvcml0aG1faGVhZGVyLmFwcGVuZCgKLSAgICAgICAgKHJlLmNvbXBpbGUocidbXj4u
XVxiJyArIF90ZW1wbGF0ZSArIHInKDwuKj8+KT9cKFteXCldJyksCi0gICAgICAgICBfdGVtcGxh
dGUsCi0gICAgICAgICAnPGFsZ29yaXRobT4nKSkKLQotX3JlX3BhdHRlcm5fdGVtcGxhdGVzID0g
W10KLWZvciBfaGVhZGVyLCBfdGVtcGxhdGVzIGluIF9IRUFERVJTX0NPTlRBSU5JTkdfVEVNUExB
VEVTOgotICAgIGZvciBfdGVtcGxhdGUgaW4gX3RlbXBsYXRlczoKLSAgICAgICAgX3JlX3BhdHRl
cm5fdGVtcGxhdGVzLmFwcGVuZCgKLSAgICAgICAgICAgIChyZS5jb21waWxlKHInKFw8fFxiKScg
KyBfdGVtcGxhdGUgKyByJ1xzKlw8JyksCi0gICAgICAgICAgICAgX3RlbXBsYXRlICsgJzw+JywK
LSAgICAgICAgICAgICBfaGVhZGVyKSkKLQotCi1kZWYgZmlsZXNfYmVsb25nX3RvX3NhbWVfbW9k
dWxlKGZpbGVuYW1lX2NwcCwgZmlsZW5hbWVfaCk6Ci0gICAgIiIiQ2hlY2sgaWYgdGhlc2UgdHdv
IGZpbGVuYW1lcyBiZWxvbmcgdG8gdGhlIHNhbWUgbW9kdWxlLgotCi0gICAgVGhlIGNvbmNlcHQg
b2YgYSAnbW9kdWxlJyBoZXJlIGlzIGEgYXMgZm9sbG93czoKLSAgICBmb28uaCwgZm9vLWlubC5o
LCBmb28uY3BwLCBmb29fdGVzdC5jcHAgYW5kIGZvb191bml0dGVzdC5jcHAgYmVsb25nIHRvIHRo
ZQotICAgIHNhbWUgJ21vZHVsZScgaWYgdGhleSBhcmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgot
ICAgIHNvbWUvcGF0aC9wdWJsaWMveHl6enkgYW5kIHNvbWUvcGF0aC9pbnRlcm5hbC94eXp6eSBh
cmUgYWxzbyBjb25zaWRlcmVkCi0gICAgdG8gYmVsb25nIHRvIHRoZSBzYW1lIG1vZHVsZSBoZXJl
LgotCi0gICAgSWYgdGhlIGZpbGVuYW1lX2NwcCBjb250YWlucyBhIGxvbmdlciBwYXRoIHRoYW4g
dGhlIGZpbGVuYW1lX2gsIGZvciBleGFtcGxlLAotICAgICcvYWJzb2x1dGUvcGF0aC90by9iYXNl
L3N5c2luZm8uY3BwJywgYW5kIHRoaXMgZmlsZSB3b3VsZCBpbmNsdWRlCi0gICAgJ2Jhc2Uvc3lz
aW5mby5oJywgdGhpcyBmdW5jdGlvbiBhbHNvIHByb2R1Y2VzIHRoZSBwcmVmaXggbmVlZGVkIHRv
IG9wZW4gdGhlCi0gICAgaGVhZGVyLiBUaGlzIGlzIHVzZWQgYnkgdGhlIGNhbGxlciBvZiB0aGlz
IGZ1bmN0aW9uIHRvIG1vcmUgcm9idXN0bHkgb3BlbiB0aGUKLSAgICBoZWFkZXIgZmlsZS4gV2Ug
ZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHJlYWwgaW5jbHVkZSBwYXRocyBpbiB0aGlzIGNvbnRl
eHQsCi0gICAgc28gd2UgbmVlZCB0aGlzIGd1ZXNzd29yayBoZXJlLgotCi0gICAgS25vd24gYnVn
czogdG9vbHMvYmFzZS9iYXIuY3BwIGFuZCBiYXNlL2Jhci5oIGJlbG9uZyB0byB0aGUgc2FtZSBt
b2R1bGUKLSAgICBhY2NvcmRpbmcgdG8gdGhpcyBpbXBsZW1lbnRhdGlvbi4gQmVjYXVzZSBvZiB0
aGlzLCB0aGlzIGZ1bmN0aW9uIGdpdmVzCi0gICAgc29tZSBmYWxzZSBwb3NpdGl2ZXMuIFRoaXMg
c2hvdWxkIGJlIHN1ZmZpY2llbnRseSByYXJlIGluIHByYWN0aWNlLgotCi0gICAgQXJnczoKLSAg
ICAgIGZpbGVuYW1lX2NwcDogaXMgdGhlIHBhdGggZm9yIHRoZSAuY3BwIGZpbGUKLSAgICAgIGZp
bGVuYW1lX2g6IGlzIHRoZSBwYXRoIGZvciB0aGUgaGVhZGVyIHBhdGgKLQotICAgIFJldHVybnM6
Ci0gICAgICBUdXBsZSB3aXRoIGEgYm9vbCBhbmQgYSBzdHJpbmc6Ci0gICAgICBib29sOiBUcnVl
IGlmIGZpbGVuYW1lX2NwcCBhbmQgZmlsZW5hbWVfaCBiZWxvbmcgdG8gdGhlIHNhbWUgbW9kdWxl
LgotICAgICAgc3RyaW5nOiB0aGUgYWRkaXRpb25hbCBwcmVmaXggbmVlZGVkIHRvIG9wZW4gdGhl
IGhlYWRlciBmaWxlLgotICAgICIiIgotCi0gICAgaWYgbm90IGZpbGVuYW1lX2NwcC5lbmRzd2l0
aCgnLmNwcCcpOgotICAgICAgICByZXR1cm4gKEZhbHNlLCAnJykKLSAgICBmaWxlbmFtZV9jcHAg
PSBmaWxlbmFtZV9jcHBbOi1sZW4oJy5jcHAnKV0KLSAgICBpZiBmaWxlbmFtZV9jcHAuZW5kc3dp
dGgoJ191bml0dGVzdCcpOgotICAgICAgICBmaWxlbmFtZV9jcHAgPSBmaWxlbmFtZV9jcHBbOi1s
ZW4oJ191bml0dGVzdCcpXQotICAgIGVsaWYgZmlsZW5hbWVfY3BwLmVuZHN3aXRoKCdfdGVzdCcp
OgotICAgICAgICBmaWxlbmFtZV9jcHAgPSBmaWxlbmFtZV9jcHBbOi1sZW4oJ190ZXN0JyldCi0g
ICAgZmlsZW5hbWVfY3BwID0gZmlsZW5hbWVfY3BwLnJlcGxhY2UoJy9wdWJsaWMvJywgJy8nKQot
ICAgIGZpbGVuYW1lX2NwcCA9IGZpbGVuYW1lX2NwcC5yZXBsYWNlKCcvaW50ZXJuYWwvJywgJy8n
KQotCi0gICAgaWYgbm90IGZpbGVuYW1lX2guZW5kc3dpdGgoJy5oJyk6Ci0gICAgICAgIHJldHVy
biAoRmFsc2UsICcnKQotICAgIGZpbGVuYW1lX2ggPSBmaWxlbmFtZV9oWzotbGVuKCcuaCcpXQot
ICAgIGlmIGZpbGVuYW1lX2guZW5kc3dpdGgoJy1pbmwnKToKLSAgICAgICAgZmlsZW5hbWVfaCA9
IGZpbGVuYW1lX2hbOi1sZW4oJy1pbmwnKV0KLSAgICBmaWxlbmFtZV9oID0gZmlsZW5hbWVfaC5y
ZXBsYWNlKCcvcHVibGljLycsICcvJykKLSAgICBmaWxlbmFtZV9oID0gZmlsZW5hbWVfaC5yZXBs
YWNlKCcvaW50ZXJuYWwvJywgJy8nKQotCi0gICAgZmlsZXNfYmVsb25nX3RvX3NhbWVfbW9kdWxl
ID0gZmlsZW5hbWVfY3BwLmVuZHN3aXRoKGZpbGVuYW1lX2gpCi0gICAgY29tbW9uX3BhdGggPSAn
JwotICAgIGlmIGZpbGVzX2JlbG9uZ190b19zYW1lX21vZHVsZToKLSAgICAgICAgY29tbW9uX3Bh
dGggPSBmaWxlbmFtZV9jcHBbOi1sZW4oZmlsZW5hbWVfaCldCi0gICAgcmV0dXJuIGZpbGVzX2Jl
bG9uZ190b19zYW1lX21vZHVsZSwgY29tbW9uX3BhdGgKLQotCi1kZWYgdXBkYXRlX2luY2x1ZGVf
c3RhdGUoZmlsZW5hbWUsIGluY2x1ZGVfc3RhdGUsIGlvPWNvZGVjcyk6Ci0gICAgIiIiRmlsbCB1
cCB0aGUgaW5jbHVkZV9zdGF0ZSB3aXRoIG5ldyBpbmNsdWRlcyBmb3VuZCBmcm9tIHRoZSBmaWxl
LgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiB0aGUgbmFtZSBvZiB0aGUgaGVhZGVyIHRv
IHJlYWQuCi0gICAgICBpbmNsdWRlX3N0YXRlOiBhbiBfSW5jbHVkZVN0YXRlIGluc3RhbmNlIGlu
IHdoaWNoIHRoZSBoZWFkZXJzIGFyZSBpbnNlcnRlZC4KLSAgICAgIGlvOiBUaGUgaW8gZmFjdG9y
eSB0byB1c2UgdG8gcmVhZCB0aGUgZmlsZS4gUHJvdmlkZWQgZm9yIHRlc3RhYmlsaXR5LgotCi0g
ICAgUmV0dXJuczoKLSAgICAgIFRydWUgaWYgYSBoZWFkZXIgd2FzIHN1Y2Nlc2Z1bGx5IGFkZGVk
LiBGYWxzZSBvdGhlcndpc2UuCi0gICAgIiIiCi0gICAgaGVhZGVyX2ZpbGUgPSBOb25lCi0gICAg
dHJ5OgotICAgICAgICBoZWFkZXJfZmlsZSA9IGlvLm9wZW4oZmlsZW5hbWUsICdyJywgJ3V0Zjgn
LCAncmVwbGFjZScpCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIHJldHVybiBGYWxzZQot
ICAgIGxpbmVfbnVtYmVyID0gMAotICAgIGZvciBsaW5lIGluIGhlYWRlcl9maWxlOgotICAgICAg
ICBsaW5lX251bWJlciArPSAxCi0gICAgICAgIGNsZWFuX2xpbmUgPSBjbGVhbnNlX2NvbW1lbnRz
KGxpbmUpCi0gICAgICAgIG1hdGNoZWQgPSBfUkVfUEFUVEVSTl9JTkNMVURFLnNlYXJjaChjbGVh
bl9saW5lKQotICAgICAgICBpZiBtYXRjaGVkOgotICAgICAgICAgICAgaW5jbHVkZSA9IG1hdGNo
ZWQuZ3JvdXAoMikKLSAgICAgICAgICAgICMgVGhlIHZhbHVlIGZvcm1hdHRpbmcgaXMgY3V0ZSwg
YnV0IG5vdCByZWFsbHkgdXNlZCByaWdodCBub3cuCi0gICAgICAgICAgICAjIFdoYXQgbWF0dGVy
cyBoZXJlIGlzIHRoYXQgdGhlIGtleSBpcyBpbiBpbmNsdWRlX3N0YXRlLgotICAgICAgICAgICAg
aW5jbHVkZV9zdGF0ZS5zZXRkZWZhdWx0KGluY2x1ZGUsICclczolZCcgJSAoZmlsZW5hbWUsIGxp
bmVfbnVtYmVyKSkKLSAgICByZXR1cm4gVHJ1ZQotCi0KLWRlZiBjaGVja19mb3JfaW5jbHVkZV93
aGF0X3lvdV91c2UoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBpbmNsdWRlX3N0YXRlLCBlcnJvciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW89Y29kZWNzKToKLSAgICAiIiJS
ZXBvcnRzIGZvciBtaXNzaW5nIHN0bCBpbmNsdWRlcy4KLQotICAgIFRoaXMgZnVuY3Rpb24gd2ls
bCBvdXRwdXQgd2FybmluZ3MgdG8gbWFrZSBzdXJlIHlvdSBhcmUgaW5jbHVkaW5nIHRoZSBoZWFk
ZXJzCi0gICAgbmVjZXNzYXJ5IGZvciB0aGUgc3RsIGNvbnRhaW5lcnMgYW5kIGZ1bmN0aW9ucyB0
aGF0IHlvdSB1c2UuIFdlIG9ubHkgZ2l2ZSBvbmUKLSAgICByZWFzb24gdG8gaW5jbHVkZSBhIGhl
YWRlci4gRm9yIGV4YW1wbGUsIGlmIHlvdSB1c2UgYm90aCBlcXVhbF90bzw+IGFuZAotICAgIGxl
c3M8PiBpbiBhIC5oIGZpbGUsIG9ubHkgb25lICh0aGUgbGF0dGVyIGluIHRoZSBmaWxlKSBvZiB0
aGVzZSB3aWxsIGJlCi0gICAgcmVwb3J0ZWQgYXMgYSByZWFzb24gdG8gaW5jbHVkZSB0aGUgPGZ1
bmN0aW9uYWw+LgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUg
Y3VycmVudCBmaWxlLgotICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5j
ZSBjb250YWluaW5nIHRoZSBmaWxlLgotICAgICAgaW5jbHVkZV9zdGF0ZTogQW4gX0luY2x1ZGVT
dGF0ZSBpbnN0YW5jZS4KLSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFu
eSBlcnJvcnMgZm91bmQuCi0gICAgICBpbzogVGhlIElPIGZhY3RvcnkgdG8gdXNlIHRvIHJlYWQg
dGhlIGhlYWRlciBmaWxlLiBQcm92aWRlZCBmb3IgdW5pdHRlc3QKLSAgICAgICAgICBpbmplY3Rp
b24uCi0gICAgIiIiCi0gICAgcmVxdWlyZWQgPSB7fSAgIyBBIG1hcCBvZiBoZWFkZXIgbmFtZSB0
byBsaW5lX251bWJlciBhbmQgdGhlIHRlbXBsYXRlIGVudGl0eS4KLSAgICAgICAgIyBFeGFtcGxl
IG9mIHJlcXVpcmVkOiB7ICc8ZnVuY3Rpb25hbD4nOiAoMTIxOSwgJ2xlc3M8PicpIH0KLQotICAg
IGZvciBsaW5lX251bWJlciBpbiB4cmFuZ2UoY2xlYW5fbGluZXMubnVtX2xpbmVzKCkpOgotICAg
ICAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXQotICAgICAgICBpZiBu
b3QgbGluZSBvciBsaW5lWzBdID09ICcjJzoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAg
ICAgIyBTdHJpbmcgaXMgc3BlY2lhbCAtLSBpdCBpcyBhIG5vbi10ZW1wbGF0aXplZCB0eXBlIGlu
IFNUTC4KLSAgICAgICAgaWYgX1JFX1BBVFRFUk5fU1RSSU5HLnNlYXJjaChsaW5lKToKLSAgICAg
ICAgICAgIHJlcXVpcmVkWyc8c3RyaW5nPiddID0gKGxpbmVfbnVtYmVyLCAnc3RyaW5nJykKLQot
ICAgICAgICBmb3IgcGF0dGVybiwgdGVtcGxhdGUsIGhlYWRlciBpbiBfcmVfcGF0dGVybl9hbGdv
cml0aG1faGVhZGVyOgotICAgICAgICAgICAgaWYgcGF0dGVybi5zZWFyY2gobGluZSk6Ci0gICAg
ICAgICAgICAgICAgcmVxdWlyZWRbaGVhZGVyXSA9IChsaW5lX251bWJlciwgdGVtcGxhdGUpCi0K
LSAgICAgICAgIyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGlzIGp1c3QgYSBzcGVlZCB1cCwgbm8g
c2VtYW50aWNzIGFyZSBjaGFuZ2VkLgotICAgICAgICBpZiBub3QgJzwnIGluIGxpbmU6ICAjIFJl
ZHVjZXMgdGhlIGNwdSB0aW1lIHVzYWdlIGJ5IHNraXBwaW5nIGxpbmVzLgotICAgICAgICAgICAg
Y29udGludWUKLQotICAgICAgICBmb3IgcGF0dGVybiwgdGVtcGxhdGUsIGhlYWRlciBpbiBfcmVf
cGF0dGVybl90ZW1wbGF0ZXM6Ci0gICAgICAgICAgICBpZiBwYXR0ZXJuLnNlYXJjaChsaW5lKToK
LSAgICAgICAgICAgICAgICByZXF1aXJlZFtoZWFkZXJdID0gKGxpbmVfbnVtYmVyLCB0ZW1wbGF0
ZSkKLQotICAgICMgVGhlIHBvbGljeSBpcyB0aGF0IGlmIHlvdSAjaW5jbHVkZSBzb21ldGhpbmcg
aW4gZm9vLmggeW91IGRvbid0IG5lZWQgdG8KLSAgICAjIGluY2x1ZGUgaXQgYWdhaW4gaW4gZm9v
LmNwcC4gSGVyZSwgd2Ugd2lsbCBsb29rIGF0IHBvc3NpYmxlIGluY2x1ZGVzLgotICAgICMgTGV0
J3MgY29weSB0aGUgaW5jbHVkZV9zdGF0ZSBzbyBpdCBpcyBvbmx5IG1lc3NlZCB1cCB3aXRoaW4g
dGhpcyBmdW5jdGlvbi4KLSAgICBpbmNsdWRlX3N0YXRlID0gaW5jbHVkZV9zdGF0ZS5jb3B5KCkK
LQotICAgICMgRGlkIHdlIGZpbmQgdGhlIGhlYWRlciBmb3IgdGhpcyBmaWxlIChpZiBhbnkpIGFu
ZCBzdWNjZXNmdWxseSBsb2FkIGl0PwotICAgIGhlYWRlcl9mb3VuZCA9IEZhbHNlCi0KLSAgICAj
IFVzZSB0aGUgYWJzb2x1dGUgcGF0aCBzbyB0aGF0IG1hdGNoaW5nIHdvcmtzIHByb3Blcmx5Lgot
ICAgIGFic19maWxlbmFtZSA9IG9zLnBhdGguYWJzcGF0aChmaWxlbmFtZSkKLQotICAgICMgRm9y
IEVtYWNzJ3MgZmx5bWFrZS4KLSAgICAjIElmIGNwcF9zdHlsZSBpcyBpbnZva2VkIGZyb20gRW1h
Y3MncyBmbHltYWtlLCBhIHRlbXBvcmFyeSBmaWxlIGlzIGdlbmVyYXRlZAotICAgICMgYnkgZmx5
bWFrZSBhbmQgdGhhdCBmaWxlIG5hbWUgbWlnaHQgZW5kIHdpdGggJ19mbHltYWtlLmNwcCcuIElu
IHRoYXQgY2FzZSwKLSAgICAjIHJlc3RvcmUgb3JpZ2luYWwgZmlsZSBuYW1lIGhlcmUgc28gdGhh
dCB0aGUgY29ycmVzcG9uZGluZyBoZWFkZXIgZmlsZSBjYW4gYmUKLSAgICAjIGZvdW5kLgotICAg
ICMgZS5nLiBJZiB0aGUgZmlsZSBuYW1lIGlzICdmb29fZmx5bWFrZS5jcHAnLCB3ZSBzaG91bGQg
c2VhcmNoIGZvciAnZm9vLmgnCi0gICAgIyBpbnN0ZWFkIG9mICdmb29fZmx5bWFrZS5oJwotICAg
IGFic19maWxlbmFtZSA9IHJlLnN1YihyJ19mbHltYWtlXC5jcHAkJywgJy5jcHAnLCBhYnNfZmls
ZW5hbWUpCi0KLSAgICAjIGluY2x1ZGVfc3RhdGUgaXMgbW9kaWZpZWQgZHVyaW5nIGl0ZXJhdGlv
biwgc28gd2UgaXRlcmF0ZSBvdmVyIGEgY29weSBvZgotICAgICMgdGhlIGtleXMuCi0gICAgZm9y
IGhlYWRlciBpbiBpbmNsdWRlX3N0YXRlLmtleXMoKTogICNOT0xJTlQKLSAgICAgICAgKHNhbWVf
bW9kdWxlLCBjb21tb25fcGF0aCkgPSBmaWxlc19iZWxvbmdfdG9fc2FtZV9tb2R1bGUoYWJzX2Zp
bGVuYW1lLCBoZWFkZXIpCi0gICAgICAgIGZ1bGxwYXRoID0gY29tbW9uX3BhdGggKyBoZWFkZXIK
LSAgICAgICAgaWYgc2FtZV9tb2R1bGUgYW5kIHVwZGF0ZV9pbmNsdWRlX3N0YXRlKGZ1bGxwYXRo
LCBpbmNsdWRlX3N0YXRlLCBpbyk6Ci0gICAgICAgICAgICBoZWFkZXJfZm91bmQgPSBUcnVlCi0K
LSAgICAjIElmIHdlIGNhbid0IGZpbmQgdGhlIGhlYWRlciBmaWxlIGZvciBhIC5jcHAsIGFzc3Vt
ZSBpdCdzIGJlY2F1c2Ugd2UgZG9uJ3QKLSAgICAjIGtub3cgd2hlcmUgdG8gbG9vay4gSW4gdGhh
dCBjYXNlIHdlJ2xsIGdpdmUgdXAgYXMgd2UncmUgbm90IHN1cmUgdGhleQotICAgICMgZGlkbid0
IGluY2x1ZGUgaXQgaW4gdGhlIC5oIGZpbGUuCi0gICAgIyBGSVhNRTogRG8gYSBiZXR0ZXIgam9i
IG9mIGZpbmRpbmcgLmggZmlsZXMgc28gd2UgYXJlIGNvbmZpZGVudCB0aGF0Ci0gICAgIyAgICAg
ICAgbm90IGhhdmluZyB0aGUgLmggZmlsZSBtZWFucyB0aGVyZSBpc24ndCBvbmUuCi0gICAgaWYg
ZmlsZW5hbWUuZW5kc3dpdGgoJy5jcHAnKSBhbmQgbm90IGhlYWRlcl9mb3VuZDoKLSAgICAgICAg
cmV0dXJuCi0KLSAgICAjIEFsbCB0aGUgbGluZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZCwgcmVwb3J0
IHRoZSBlcnJvcnMgZm91bmQuCi0gICAgZm9yIHJlcXVpcmVkX2hlYWRlcl91bnN0cmlwcGVkIGlu
IHJlcXVpcmVkOgotICAgICAgICB0ZW1wbGF0ZSA9IHJlcXVpcmVkW3JlcXVpcmVkX2hlYWRlcl91
bnN0cmlwcGVkXVsxXQotICAgICAgICBpZiB0ZW1wbGF0ZSBpbiBfSEVBREVSU19BQ0NFUFRFRF9C
VVRfTk9UX1BST01PVEVEOgotICAgICAgICAgICAgaGVhZGVycyA9IF9IRUFERVJTX0FDQ0VQVEVE
X0JVVF9OT1RfUFJPTU9URURbdGVtcGxhdGVdCi0gICAgICAgICAgICBpZiBbVHJ1ZSBmb3IgaGVh
ZGVyIGluIGhlYWRlcnMgaWYgaGVhZGVyIGluIGluY2x1ZGVfc3RhdGVdOgotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIHJlcXVpcmVkX2hlYWRlcl91bnN0cmlwcGVkLnN0cmlw
KCc8PiInKSBub3QgaW4gaW5jbHVkZV9zdGF0ZToKLSAgICAgICAgICAgIGVycm9yKHJlcXVpcmVk
W3JlcXVpcmVkX2hlYWRlcl91bnN0cmlwcGVkXVswXSwKLSAgICAgICAgICAgICAgICAgICdidWls
ZC9pbmNsdWRlX3doYXRfeW91X3VzZScsIDQsCi0gICAgICAgICAgICAgICAgICAnQWRkICNpbmNs
dWRlICcgKyByZXF1aXJlZF9oZWFkZXJfdW5zdHJpcHBlZCArICcgZm9yICcgKyB0ZW1wbGF0ZSkK
LQotCi1kZWYgcHJvY2Vzc19saW5lKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwKLSAgICAgICAg
ICAgICAgICAgY2xlYW5fbGluZXMsIGxpbmUsIGluY2x1ZGVfc3RhdGUsIGZ1bmN0aW9uX3N0YXRl
LAotICAgICAgICAgICAgICAgICBjbGFzc19zdGF0ZSwgZmlsZV9zdGF0ZSwgZXJyb3IpOgotICAg
ICIiIlByb2Nlc3NlcyBhIHNpbmdsZSBsaW5lIGluIHRoZSBmaWxlLgotCi0gICAgQXJnczoKLSAg
ICAgIGZpbGVuYW1lOiBGaWxlbmFtZSBvZiB0aGUgZmlsZSB0aGF0IGlzIGJlaW5nIHByb2Nlc3Nl
ZC4KLSAgICAgIGZpbGVfZXh0ZW5zaW9uOiBUaGUgZXh0ZW5zaW9uIChkb3Qgbm90IGluY2x1ZGVk
KSBvZiB0aGUgZmlsZS4KLSAgICAgIGNsZWFuX2xpbmVzOiBBbiBhcnJheSBvZiBzdHJpbmdzLCBl
YWNoIHJlcHJlc2VudGluZyBhIGxpbmUgb2YgdGhlIGZpbGUsCi0gICAgICAgICAgICAgICAgICAg
d2l0aCBjb21tZW50cyBzdHJpcHBlZC4KLSAgICAgIGxpbmU6IE51bWJlciBvZiBsaW5lIGJlaW5n
IHByb2Nlc3NlZC4KLSAgICAgIGluY2x1ZGVfc3RhdGU6IEFuIF9JbmNsdWRlU3RhdGUgaW5zdGFu
Y2UgaW4gd2hpY2ggdGhlIGhlYWRlcnMgYXJlIGluc2VydGVkLgotICAgICAgZnVuY3Rpb25fc3Rh
dGU6IEEgX0Z1bmN0aW9uU3RhdGUgaW5zdGFuY2Ugd2hpY2ggY291bnRzIGZ1bmN0aW9uIGxpbmVz
LCBldGMuCi0gICAgICBjbGFzc19zdGF0ZTogQSBfQ2xhc3NTdGF0ZSBpbnN0YW5jZSB3aGljaCBt
YWludGFpbnMgaW5mb3JtYXRpb24gYWJvdXQKLSAgICAgICAgICAgICAgICAgICB0aGUgY3VycmVu
dCBzdGFjayBvZiBuZXN0ZWQgY2xhc3MgZGVjbGFyYXRpb25zIGJlaW5nIHBhcnNlZC4KLSAgICAg
IGZpbGVfc3RhdGU6IEEgX0ZpbGVTdGF0ZSBpbnN0YW5jZSB3aGljaCBtYWludGFpbnMgaW5mb3Jt
YXRpb24gYWJvdXQKLSAgICAgICAgICAgICAgICAgIHRoZSBzdGF0ZSBvZiB0aGluZ3MgaW4gdGhl
IGZpbGUuCi0gICAgICBlcnJvcjogQSBjYWxsYWJsZSB0byB3aGljaCBlcnJvcnMgYXJlIHJlcG9y
dGVkLCB3aGljaCB0YWtlcyBhcmd1bWVudHM6Ci0gICAgICAgICAgICAgbGluZSBudW1iZXIsIGVy
cm9yIGxldmVsLCBhbmQgbWVzc2FnZQotCi0gICAgIiIiCi0gICAgcmF3X2xpbmVzID0gY2xlYW5f
bGluZXMucmF3X2xpbmVzCi0gICAgY2hlY2tfZm9yX2Z1bmN0aW9uX2xlbmd0aHMoY2xlYW5fbGlu
ZXMsIGxpbmUsIGZ1bmN0aW9uX3N0YXRlLCBlcnJvcikKLSAgICBpZiBzZWFyY2gocidcYk5PTElO
VFxiJywgcmF3X2xpbmVzW2xpbmVdKTogICMgaWdub3JlIG5vbGludCBsaW5lcwotICAgICAgICBy
ZXR1cm4KLSAgICBjaGVja19mb3JfbXVsdGlsaW5lX2NvbW1lbnRzX2FuZF9zdHJpbmdzKGNsZWFu
X2xpbmVzLCBsaW5lLCBlcnJvcikKLSAgICBjaGVja19zdHlsZShjbGVhbl9saW5lcywgbGluZSwg
ZmlsZV9leHRlbnNpb24sIGZpbGVfc3RhdGUsIGVycm9yKQotICAgIGNoZWNrX2xhbmd1YWdlKGZp
bGVuYW1lLCBjbGVhbl9saW5lcywgbGluZSwgZmlsZV9leHRlbnNpb24sIGluY2x1ZGVfc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgZXJyb3IpCi0gICAgY2hlY2tfZm9yX25vbl9zdGFuZGFyZF9j
b25zdHJ1Y3RzKGNsZWFuX2xpbmVzLCBsaW5lLCBjbGFzc19zdGF0ZSwgZXJyb3IpCi0gICAgY2hl
Y2tfcG9zaXhfdGhyZWFkaW5nKGNsZWFuX2xpbmVzLCBsaW5lLCBlcnJvcikKLSAgICBjaGVja19p
bnZhbGlkX2luY3JlbWVudChjbGVhbl9saW5lcywgbGluZSwgZXJyb3IpCi0KLQotZGVmIF9wcm9j
ZXNzX2xpbmVzKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwgbGluZXMsIGVycm9yLCBtaW5fY29u
ZmlkZW5jZSk6Ci0gICAgIiIiUGVyZm9ybXMgbGludCBjaGVja3MgYW5kIHJlcG9ydHMgYW55IGVy
cm9ycyB0byB0aGUgZ2l2ZW4gZXJyb3IgZnVuY3Rpb24uCi0KLSAgICBBcmdzOgotICAgICAgZmls
ZW5hbWU6IEZpbGVuYW1lIG9mIHRoZSBmaWxlIHRoYXQgaXMgYmVpbmcgcHJvY2Vzc2VkLgotICAg
ICAgZmlsZV9leHRlbnNpb246IFRoZSBleHRlbnNpb24gKGRvdCBub3QgaW5jbHVkZWQpIG9mIHRo
ZSBmaWxlLgotICAgICAgbGluZXM6IEFuIGFycmF5IG9mIHN0cmluZ3MsIGVhY2ggcmVwcmVzZW50
aW5nIGEgbGluZSBvZiB0aGUgZmlsZSwgd2l0aCB0aGUKLSAgICAgICAgICAgICBsYXN0IGVsZW1l
bnQgYmVpbmcgZW1wdHkgaWYgdGhlIGZpbGUgaXMgdGVybWluZWQgd2l0aCBhIG5ld2xpbmUuCi0g
ICAgICBlcnJvcjogQSBjYWxsYWJsZSB0byB3aGljaCBlcnJvcnMgYXJlIHJlcG9ydGVkLCB3aGlj
aCB0YWtlcyA0IGFyZ3VtZW50czoKLSAgICAiIiIKLSAgICBsaW5lcyA9IChbJy8vIG1hcmtlciBz
byBsaW5lIG51bWJlcnMgYW5kIGluZGljZXMgYm90aCBzdGFydCBhdCAxJ10gKyBsaW5lcyArCi0g
ICAgICAgICAgICAgWycvLyBtYXJrZXIgc28gbGluZSBudW1iZXJzIGVuZCBpbiBhIGtub3duIHdh
eSddKQotCi0gICAgaW5jbHVkZV9zdGF0ZSA9IF9JbmNsdWRlU3RhdGUoKQotICAgIGZ1bmN0aW9u
X3N0YXRlID0gX0Z1bmN0aW9uU3RhdGUobWluX2NvbmZpZGVuY2UpCi0gICAgY2xhc3Nfc3RhdGUg
PSBfQ2xhc3NTdGF0ZSgpCi0gICAgZmlsZV9zdGF0ZSA9IF9GaWxlU3RhdGUoKQotCi0gICAgY2hl
Y2tfZm9yX2NvcHlyaWdodChsaW5lcywgZXJyb3IpCi0KLSAgICBpZiBmaWxlX2V4dGVuc2lvbiA9
PSAnaCc6Ci0gICAgICAgIGNoZWNrX2Zvcl9oZWFkZXJfZ3VhcmQoZmlsZW5hbWUsIGxpbmVzLCBl
cnJvcikKLQotICAgIHJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGxpbmVzLCBlcnJvcikKLSAg
ICBjbGVhbl9saW5lcyA9IENsZWFuc2VkTGluZXMobGluZXMpCi0gICAgZm9yIGxpbmUgaW4geHJh
bmdlKGNsZWFuX2xpbmVzLm51bV9saW5lcygpKToKLSAgICAgICAgcHJvY2Vzc19saW5lKGZpbGVu
YW1lLCBmaWxlX2V4dGVuc2lvbiwgY2xlYW5fbGluZXMsIGxpbmUsCi0gICAgICAgICAgICAgICAg
ICAgICBpbmNsdWRlX3N0YXRlLCBmdW5jdGlvbl9zdGF0ZSwgY2xhc3Nfc3RhdGUsIGZpbGVfc3Rh
dGUsIGVycm9yKQotICAgIGNsYXNzX3N0YXRlLmNoZWNrX2ZpbmlzaGVkKGVycm9yKQotCi0gICAg
Y2hlY2tfZm9yX2luY2x1ZGVfd2hhdF95b3VfdXNlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgaW5j
bHVkZV9zdGF0ZSwgZXJyb3IpCi0KLSAgICAjIFdlIGNoZWNrIGhlcmUgcmF0aGVyIHRoYW4gaW5z
aWRlIHByb2Nlc3NfbGluZSBzbyB0aGF0IHdlIHNlZSByYXcKLSAgICAjIGxpbmVzIHJhdGhlciB0
aGFuICJjbGVhbmVkIiBsaW5lcy4KLSAgICBjaGVja19mb3JfdW5pY29kZV9yZXBsYWNlbWVudF9j
aGFyYWN0ZXJzKGxpbmVzLCBlcnJvcikKLQotICAgIGNoZWNrX2Zvcl9uZXdfbGluZV9hdF9lb2Yo
bGluZXMsIGVycm9yKQotCi0KLWNsYXNzIENwcFByb2Nlc3NvcihvYmplY3QpOgotCi0gICAgIiIi
UHJvY2Vzc2VzIEMrKyBsaW5lcyBmb3IgY2hlY2tpbmcgc3R5bGUuIiIiCi0KLSAgICAjIFRoaXMg
bGlzdCBpcyB1c2VkIHRvLS0KLSAgICAjCi0gICAgIyAoMSkgZ2VuZXJhdGUgYW4gZXhwbGljaXQg
bGlzdCBvZiBhbGwgcG9zc2libGUgY2F0ZWdvcmllcywKLSAgICAjICgyKSB1bml0IHRlc3QgdGhh
dCBhbGwgY2hlY2tlZCBjYXRlZ29yaWVzIGhhdmUgdmFsaWQgbmFtZXMsIGFuZAotICAgICMgKDMp
IHVuaXQgdGVzdCB0aGF0IGFsbCBjYXRlZ29yaWVzIGFyZSBnZXR0aW5nIHVuaXQgdGVzdGVkLgot
ICAgICMKLSAgICBjYXRlZ29yaWVzID0gc2V0KFsKLSAgICAgICAgJ2J1aWxkL2NsYXNzJywKLSAg
ICAgICAgJ2J1aWxkL2RlcHJlY2F0ZWQnLAotICAgICAgICAnYnVpbGQvZW5kaWZfY29tbWVudCcs
Ci0gICAgICAgICdidWlsZC9mb3J3YXJkX2RlY2wnLAotICAgICAgICAnYnVpbGQvaGVhZGVyX2d1
YXJkJywKLSAgICAgICAgJ2J1aWxkL2luY2x1ZGUnLAotICAgICAgICAnYnVpbGQvaW5jbHVkZV9v
cmRlcicsCi0gICAgICAgICdidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZScsCi0gICAgICAgICdi
dWlsZC9uYW1lc3BhY2VzJywKLSAgICAgICAgJ2J1aWxkL3ByaW50Zl9mb3JtYXQnLAotICAgICAg
ICAnYnVpbGQvc3RvcmFnZV9jbGFzcycsCi0gICAgICAgICdidWlsZC91c2luZ19zdGQnLAotICAg
ICAgICAnbGVnYWwvY29weXJpZ2h0JywKLSAgICAgICAgJ3JlYWRhYmlsaXR5L2JyYWNlcycsCi0g
ICAgICAgICdyZWFkYWJpbGl0eS9jYXN0aW5nJywKLSAgICAgICAgJ3JlYWRhYmlsaXR5L2NoZWNr
JywKLSAgICAgICAgJ3JlYWRhYmlsaXR5L2NvbXBhcmlzb25fdG9femVybycsCi0gICAgICAgICdy
ZWFkYWJpbGl0eS9jb25zdHJ1Y3RvcnMnLAotICAgICAgICAncmVhZGFiaWxpdHkvY29udHJvbF9m
bG93JywKLSAgICAgICAgJ3JlYWRhYmlsaXR5L2ZuX3NpemUnLAotICAgICAgICAncmVhZGFiaWxp
dHkvZnVuY3Rpb24nLAotICAgICAgICAncmVhZGFiaWxpdHkvbXVsdGlsaW5lX2NvbW1lbnQnLAot
ICAgICAgICAncmVhZGFiaWxpdHkvbXVsdGlsaW5lX3N0cmluZycsCi0gICAgICAgICdyZWFkYWJp
bGl0eS9uYW1pbmcnLAotICAgICAgICAncmVhZGFiaWxpdHkvbnVsbCcsCi0gICAgICAgICdyZWFk
YWJpbGl0eS9zdHJlYW1zJywKLSAgICAgICAgJ3JlYWRhYmlsaXR5L3RvZG8nLAotICAgICAgICAn
cmVhZGFiaWxpdHkvdXRmOCcsCi0gICAgICAgICdydW50aW1lL2FycmF5cycsCi0gICAgICAgICdy
dW50aW1lL2Nhc3RpbmcnLAotICAgICAgICAncnVudGltZS9leHBsaWNpdCcsCi0gICAgICAgICdy
dW50aW1lL2luaXQnLAotICAgICAgICAncnVudGltZS9pbnQnLAotICAgICAgICAncnVudGltZS9p
bnZhbGlkX2luY3JlbWVudCcsCi0gICAgICAgICdydW50aW1lL21heF9taW5fbWFjcm9zJywKLSAg
ICAgICAgJ3J1bnRpbWUvbWVtc2V0JywKLSAgICAgICAgJ3J1bnRpbWUvcHJpbnRmJywKLSAgICAg
ICAgJ3J1bnRpbWUvcHJpbnRmX2Zvcm1hdCcsCi0gICAgICAgICdydW50aW1lL3JlZmVyZW5jZXMn
LAotICAgICAgICAncnVudGltZS9ydHRpJywKLSAgICAgICAgJ3J1bnRpbWUvc2l6ZW9mJywKLSAg
ICAgICAgJ3J1bnRpbWUvc3RyaW5nJywKLSAgICAgICAgJ3J1bnRpbWUvdGhyZWFkc2FmZV9mbics
Ci0gICAgICAgICdydW50aW1lL3ZpcnR1YWwnLAotICAgICAgICAnd2hpdGVzcGFjZS9ibGFua19s
aW5lJywKLSAgICAgICAgJ3doaXRlc3BhY2UvYnJhY2VzJywKLSAgICAgICAgJ3doaXRlc3BhY2Uv
Y29tbWEnLAotICAgICAgICAnd2hpdGVzcGFjZS9jb21tZW50cycsCi0gICAgICAgICd3aGl0ZXNw
YWNlL2RlY2xhcmF0aW9uJywKLSAgICAgICAgJ3doaXRlc3BhY2UvZW5kX29mX2xpbmUnLAotICAg
ICAgICAnd2hpdGVzcGFjZS9lbmRpbmdfbmV3bGluZScsCi0gICAgICAgICd3aGl0ZXNwYWNlL2lu
ZGVudCcsCi0gICAgICAgICd3aGl0ZXNwYWNlL2xhYmVscycsCi0gICAgICAgICd3aGl0ZXNwYWNl
L2xpbmVfbGVuZ3RoJywKLSAgICAgICAgJ3doaXRlc3BhY2UvbmV3bGluZScsCi0gICAgICAgICd3
aGl0ZXNwYWNlL29wZXJhdG9ycycsCi0gICAgICAgICd3aGl0ZXNwYWNlL3BhcmVucycsCi0gICAg
ICAgICd3aGl0ZXNwYWNlL3NlbWljb2xvbicsCi0gICAgICAgICd3aGl0ZXNwYWNlL3RhYicsCi0g
ICAgICAgICd3aGl0ZXNwYWNlL3RvZG8nLAotICAgICAgICBdKQotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGZpbGVfcGF0aCwgZmlsZV9leHRlbnNpb24sIGhhbmRsZV9zdHlsZV9lcnJvciwKLSAg
ICAgICAgICAgICAgICAgbWluX2NvbmZpZGVuY2UpOgotICAgICAgICAiIiJDcmVhdGUgYSBDcHBQ
cm9jZXNzb3IgaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBmaWxlX2V4dGVu
c2lvbjogQSBzdHJpbmcgdGhhdCBpcyB0aGUgZmlsZSBleHRlbnNpb24sIHdpdGhvdXQKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhlIGxlYWRpbmcgZG90LgotCi0gICAgICAgICIiIgotICAg
ICAgICBzZWxmLmZpbGVfZXh0ZW5zaW9uID0gZmlsZV9leHRlbnNpb24KLSAgICAgICAgc2VsZi5m
aWxlX3BhdGggPSBmaWxlX3BhdGgKLSAgICAgICAgc2VsZi5oYW5kbGVfc3R5bGVfZXJyb3IgPSBo
YW5kbGVfc3R5bGVfZXJyb3IKLSAgICAgICAgc2VsZi5taW5fY29uZmlkZW5jZSA9IG1pbl9jb25m
aWRlbmNlCi0KLSAgICAjIFVzZWZ1bCBmb3IgdW5pdCB0ZXN0aW5nLgotICAgIGRlZiBfX2VxX18o
c2VsZiwgb3RoZXIpOgotICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGlzIENwcFByb2Nlc3Nv
ciBpbnN0YW5jZSBpcyBlcXVhbCB0byBhbm90aGVyLiIiIgotICAgICAgICBpZiBzZWxmLmZpbGVf
ZXh0ZW5zaW9uICE9IG90aGVyLmZpbGVfZXh0ZW5zaW9uOgotICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCi0gICAgICAgIGlmIHNlbGYuZmlsZV9wYXRoICE9IG90aGVyLmZpbGVfcGF0aDoKLSAgICAg
ICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBzZWxmLmhhbmRsZV9zdHlsZV9lcnJvciAh
PSBvdGhlci5oYW5kbGVfc3R5bGVfZXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg
ICAgICAgaWYgc2VsZi5taW5fY29uZmlkZW5jZSAhPSBvdGhlci5taW5fY29uZmlkZW5jZToKLSAg
ICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAjIFVz
ZWZ1bCBmb3IgdW5pdCB0ZXN0aW5nLgotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAg
ICAgICAjIFB5dGhvbiBkb2VzIG5vdCBhdXRvbWF0aWNhbGx5IGRlZHVjZSBfX25lX18oKSBmcm9t
IF9fZXFfXygpLgotICAgICAgICByZXR1cm4gbm90IHNlbGYuX19lcV9fKG90aGVyKQotCi0gICAg
ZGVmIHByb2Nlc3Moc2VsZiwgbGluZXMpOgotICAgICAgICBfcHJvY2Vzc19saW5lcyhzZWxmLmZp
bGVfcGF0aCwgc2VsZi5maWxlX2V4dGVuc2lvbiwgbGluZXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuaGFuZGxlX3N0eWxlX2Vycm9yLCBzZWxmLm1pbl9jb25maWRlbmNlKQotCi0KLSMg
RklYTUU6IFJlbW92ZSB0aGlzIGZ1bmN0aW9uIChyZXF1aXJlcyByZWZhY3RvcmluZyB1bml0IHRl
c3RzKS4KLWRlZiBwcm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxp
bmVzLCBlcnJvciwgbWluX2NvbmZpZGVuY2UpOgotICAgIHByb2Nlc3NvciA9IENwcFByb2Nlc3Nv
cihmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGVycm9yLCBtaW5fY29uZmlkZW5jZSkKLSAgICBw
cm9jZXNzb3IucHJvY2VzcyhsaW5lcykKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHBfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2NwcF91bml0dGVzdC5weQko
cmV2aXNpb24gNTgyNTEpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3By
b2Nlc3NvcnMvY3BwX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDM3NDggKzAsMCBA
QAotIyEvdXNyL2Jpbi9weXRob24KLSMgLSotIGNvZGluZzogdXRmLTg7IC0qLQotIwotIyBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJp
Z2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCi0jIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAxMCBDaHJpcyBK
ZXJkb25layAoY2plcmRvbmVrQHdlYmtpdC5vcmcpCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0
IHRlc3QgZm9yIGNwcF9zdHlsZS5weS4iIiIKLQotIyBGSVhNRTogQWRkIGEgZ29vZCB0ZXN0IHRo
YXQgdGVzdHMgVXBkYXRlSW5jbHVkZVN0YXRlLgotCi1pbXBvcnQgY29kZWNzCi1pbXBvcnQgb3MK
LWltcG9ydCByYW5kb20KLWltcG9ydCByZQotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgY3BwIGFz
IGNwcF9zdHlsZQotZnJvbSBjcHAgaW1wb3J0IENwcFByb2Nlc3NvcgotCi0jIFRoaXMgY2xhc3Mg
d29ya3MgYXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCByZXBsYWNlcyBjcHBfc3R5bGUuRXJyb3IK
LSMgZnVuY3Rpb24gZm9yIHRoZSB1bml0IHRlc3RzLiAgV2UgYWxzbyB2ZXJpZnkgZWFjaCBjYXRl
Z29yeSB3ZSBzZWUKLSMgaXMgaW4gU1RZTEVfQ0FURUdPUklFUywgdG8gaGVscCBrZWVwIHRoYXQg
bGlzdCB1cCB0byBkYXRlLgotY2xhc3MgRXJyb3JDb2xsZWN0b3I6Ci0gICAgX2FsbF9zdHlsZV9j
YXRlZ29yaWVzID0gQ3BwUHJvY2Vzc29yLmNhdGVnb3JpZXMKLSAgICAjIFRoaXMgaXMgYSBsaXN0
IGluY2x1ZGluZyBhbGwgY2F0ZWdvcmllcyBzZWVuIGluIGFueSB1bml0IHRlc3QuCi0gICAgX3Nl
ZW5fc3R5bGVfY2F0ZWdvcmllcyA9IHt9Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgYXNzZXJ0
X2ZuKToKLSAgICAgICAgIiIiYXNzZXJ0X2ZuOiBhIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB3ZSBu
b3RpY2UgYSBwcm9ibGVtLiIiIgotICAgICAgICBzZWxmLl9hc3NlcnRfZm4gPSBhc3NlcnRfZm4K
LSAgICAgICAgc2VsZi5fZXJyb3JzID0gW10KLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB1bnVz
ZWRfbGluZW51bSwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpOgotICAgICAgICBzZWxm
Ll9hc3NlcnRfZm4oY2F0ZWdvcnkgaW4gc2VsZi5fYWxsX3N0eWxlX2NhdGVnb3JpZXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnTWVzc2FnZSAiJXMiIGhhcyBjYXRlZ29yeSAiJXMiLCcKLSAg
ICAgICAgICAgICAgICAgICAgICAgICcgd2hpY2ggaXMgbm90IGluIFNUWUxFX0NBVEVHT1JJRVMn
ICUgKG1lc3NhZ2UsIGNhdGVnb3J5KSkKLSAgICAgICAgc2VsZi5fc2Vlbl9zdHlsZV9jYXRlZ29y
aWVzW2NhdGVnb3J5XSA9IDEKLSAgICAgICAgc2VsZi5fZXJyb3JzLmFwcGVuZCgnJXMgIFslc10g
WyVkXScgJSAobWVzc2FnZSwgY2F0ZWdvcnksIGNvbmZpZGVuY2UpKQotCi0gICAgZGVmIHJlc3Vs
dHMoc2VsZik6Ci0gICAgICAgIGlmIGxlbihzZWxmLl9lcnJvcnMpIDwgMjoKLSAgICAgICAgICAg
IHJldHVybiAnJy5qb2luKHNlbGYuX2Vycm9ycykgICMgTW9zdCB0ZXN0cyBleHBlY3QgdG8gaGF2
ZSBhIHN0cmluZy4KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9lcnJv
cnMgICMgTGV0J3MgZ2l2ZSBhIGxpc3QgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZS4KLQotICAg
IGRlZiByZXN1bHRfbGlzdChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2Vycm9ycwotCi0g
ICAgZGVmIHZlcmlmeV9hbGxfY2F0ZWdvcmllc19hcmVfc2VlbihzZWxmKToKLSAgICAgICAgIiIi
RmFpbHMgaWYgdGhlcmUncyBhIGNhdGVnb3J5IGluIF9hbGxfc3R5bGVfY2F0ZWdvcmllcyAtIF9z
ZWVuX3N0eWxlX2NhdGVnb3JpZXMuCi0KLSAgICAgICAgVGhpcyBzaG91bGQgb25seSBiZSBjYWxs
ZWQgYWZ0ZXIgYWxsIHRlc3RzIGFyZSBydW4sIHNvCi0gICAgICAgIF9zZWVuX3N0eWxlX2NhdGVn
b3JpZXMgaGFzIGhhZCBhIGNoYW5jZSB0byBmdWxseSBwb3B1bGF0ZS4gIFNpbmNlCi0gICAgICAg
IHRoaXMgaXNuJ3QgY2FsbGVkIGZyb20gd2l0aGluIHRoZSBub3JtYWwgdW5pdHRlc3QgZnJhbWV3
b3JrLCB3ZQotICAgICAgICBjYW4ndCB1c2UgdGhlIG5vcm1hbCB1bml0dGVzdCBhc3NlcnQgbWFj
cm9zLiAgSW5zdGVhZCB3ZSBqdXN0IGV4aXQKLSAgICAgICAgd2hlbiB3ZSBzZWUgYW4gZXJyb3Iu
ICBHb29kIHRoaW5nIHRoaXMgdGVzdCBpcyBhbHdheXMgcnVuIGxhc3QhCi0gICAgICAgICIiIgot
ICAgICAgICBmb3IgY2F0ZWdvcnkgaW4gc2VsZi5fYWxsX3N0eWxlX2NhdGVnb3JpZXM6Ci0gICAg
ICAgICAgICBpZiBjYXRlZ29yeSBub3QgaW4gc2VsZi5fc2Vlbl9zdHlsZV9jYXRlZ29yaWVzOgot
ICAgICAgICAgICAgICAgIGltcG9ydCBzeXMKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgnRkFU
QUwgRVJST1I6IFRoZXJlIGFyZSBubyB0ZXN0cyBmb3IgY2F0ZWdvcnkgIiVzIicgJSBjYXRlZ29y
eSkKLQotICAgIGRlZiByZW1vdmVfaWZfcHJlc2VudChzZWxmLCBzdWJzdHIpOgotICAgICAgICBm
b3IgKGluZGV4LCBlcnJvcikgaW4gZW51bWVyYXRlKHNlbGYuX2Vycm9ycyk6Ci0gICAgICAgICAg
ICBpZiBlcnJvci5maW5kKHN1YnN0cikgIT0gLTE6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZXJy
b3JzID0gc2VsZi5fZXJyb3JzWzA6aW5kZXhdICsgc2VsZi5fZXJyb3JzWyhpbmRleCArIDEpOl0K
LSAgICAgICAgICAgICAgICBicmVhawotCi0KLSMgVGhpcyBjbGFzcyBpcyBhIGxhbWUgbW9jayBv
ZiBjb2RlY3MuIFdlIGRvIG5vdCB2ZXJpZnkgZmlsZW5hbWUsIG1vZGUsIG9yCi0jIGVuY29kaW5n
LCBidXQgZm9yIHRoZSBjdXJyZW50IHVzZSBjYXNlIGl0IGlzIG5vdCBuZWVkZWQuCi1jbGFzcyBN
b2NrSW86Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vY2tfZmlsZSk6Ci0gICAgICAgIHNlbGYu
bW9ja19maWxlID0gbW9ja19maWxlCi0KLSAgICBkZWYgb3BlbihzZWxmLCB1bnVzZWRfZmlsZW5h
bWUsIHVudXNlZF9tb2RlLCB1bnVzZWRfZW5jb2RpbmcsIF8pOiAgIyBOT0xJTlQKLSAgICAgICAg
IyAobGludCBkb2Vzbid0IGxpa2Ugb3BlbiBhcyBhIG1ldGhvZCBuYW1lKQotICAgICAgICByZXR1
cm4gc2VsZi5tb2NrX2ZpbGUKLQotCi1jbGFzcyBDcHBGdW5jdGlvbnNUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKLQotICAgICIiIlN1cHBvcnRzIHRlc3RpbmcgZnVuY3Rpb25zIHRoYXQgZG8gbm90
IG5lZWQgQ3BwU3R5bGVUZXN0QmFzZS4iIiIKLQotICAgIGRlZiB0ZXN0X2lzX2Nfb3Jfb2JqZWN0
aXZlX2Moc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcHBfc3R5bGUuaXNfY19vcl9v
YmplY3RpdmVfYygiYyIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoY3BwX3N0eWxlLmlzX2Nf
b3Jfb2JqZWN0aXZlX2MoIm0iKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjcHBfc3R5bGUu
aXNfY19vcl9vYmplY3RpdmVfYygiY3BwIikpCi0KLQotY2xhc3MgQ3BwU3R5bGVUZXN0QmFzZSh1
bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiUHJvdmlkZXMgc29tZSB1c2VmdWwgaGVscGVyIGZ1
bmN0aW9ucyBmb3IgY3BwX3N0eWxlIHRlc3RzLgotCi0gICAgQXR0cmlidXRlczoKLSAgICAgIG1p
bl9jb25maWRlbmNlOiBBbiBpbnRlZ2VyIHRoYXQgaXMgdGhlIGN1cnJlbnQgbWluaW11bSBjb25m
aWRlbmNlCi0gICAgICAgICAgICAgICAgICAgICAgbGV2ZWwgZm9yIHRoZSB0ZXN0cy4KLQotICAg
ICIiIgotCi0gICAgIyBGSVhNRTogUmVmYWN0b3IgdGhlIHVuaXQgdGVzdHMgc28gdGhlIGNvbmZp
ZGVuY2UgbGV2ZWwgaXMgcGFzc2VkCi0gICAgIyAgICAgICAgZXhwbGljaXRseSwganVzdCBsaWtl
IGl0IGlzIGluIHRoZSByZWFsIGNvZGUuCi0gICAgbWluX2NvbmZpZGVuY2UgPSAxOwotCi0gICAg
IyBIZWxwZXIgZnVuY3Rpb24gdG8gYXZvaWQgbmVlZGluZyB0byBleHBsaWNpdGx5IHBhc3MgY29u
ZmlkZW5jZQotICAgICMgaW4gYWxsIHRoZSB1bml0IHRlc3QgY2FsbHMgdG8gY3BwX3N0eWxlLnBy
b2Nlc3NfZmlsZV9kYXRhKCkuCi0gICAgZGVmIHByb2Nlc3NfZmlsZV9kYXRhKHNlbGYsIGZpbGVu
YW1lLCBmaWxlX2V4dGVuc2lvbiwgbGluZXMsIGVycm9yKToKLSAgICAgICAgIiIiQ2FsbCBjcHBf
c3R5bGUucHJvY2Vzc19maWxlX2RhdGEoKSB3aXRoIHRoZSBtaW5fY29uZmlkZW5jZS4iIiIKLSAg
ICAgICAgcmV0dXJuIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFtZSwgZmlsZV9l
eHRlbnNpb24sIGxpbmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVycm9yLCBzZWxmLm1pbl9jb25maWRlbmNlKQotCi0gICAgIyBQZXJmb3JtIGxpbnQgb24g
c2luZ2xlIGxpbmUgb2YgaW5wdXQgYW5kIHJldHVybiB0aGUgZXJyb3IgbWVzc2FnZS4KLSAgICBk
ZWYgcGVyZm9ybV9zaW5nbGVfbGluZV9saW50KHNlbGYsIGNvZGUsIGZpbGVfbmFtZSk6Ci0gICAg
ICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAg
ICAgbGluZXMgPSBjb2RlLnNwbGl0KCdcbicpCi0gICAgICAgIGNwcF9zdHlsZS5yZW1vdmVfbXVs
dGlfbGluZV9jb21tZW50cyhsaW5lcywgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICBjbGVhbl9s
aW5lcyA9IGNwcF9zdHlsZS5DbGVhbnNlZExpbmVzKGxpbmVzKQotICAgICAgICBpbmNsdWRlX3N0
YXRlID0gY3BwX3N0eWxlLl9JbmNsdWRlU3RhdGUoKQotICAgICAgICBmdW5jdGlvbl9zdGF0ZSA9
IGNwcF9zdHlsZS5fRnVuY3Rpb25TdGF0ZShzZWxmLm1pbl9jb25maWRlbmNlKQotICAgICAgICBl
eHQgPSBmaWxlX25hbWVbZmlsZV9uYW1lLnJmaW5kKCcuJykgKyAxOl0KLSAgICAgICAgY2xhc3Nf
c3RhdGUgPSBjcHBfc3R5bGUuX0NsYXNzU3RhdGUoKQotICAgICAgICBmaWxlX3N0YXRlID0gY3Bw
X3N0eWxlLl9GaWxlU3RhdGUoKQotICAgICAgICBjcHBfc3R5bGUucHJvY2Vzc19saW5lKGZpbGVf
bmFtZSwgZXh0LCBjbGVhbl9saW5lcywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmNsdWRlX3N0YXRlLCBmdW5jdGlvbl9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjbGFzc19zdGF0ZSwgZmlsZV9zdGF0ZSwgZXJyb3JfY29sbGVjdG9yKQotICAgICAg
ICAjIFNpbmdsZS1saW5lIGxpbnQgdGVzdHMgYXJlIGFsbG93ZWQgdG8gZmFpbCB0aGUgJ3VubGlu
dGFibGUgZnVuY3Rpb24nCi0gICAgICAgICMgY2hlY2suCi0gICAgICAgIGVycm9yX2NvbGxlY3Rv
ci5yZW1vdmVfaWZfcHJlc2VudCgKLSAgICAgICAgICAgICdMaW50IGZhaWxlZCB0byBmaW5kIHN0
YXJ0IG9mIGZ1bmN0aW9uIGJvZHkuJykKLSAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rvci5y
ZXN1bHRzKCkKLQotICAgICMgUGVyZm9ybSBsaW50IG92ZXIgbXVsdGlwbGUgbGluZXMgYW5kIHJl
dHVybiB0aGUgZXJyb3IgbWVzc2FnZS4KLSAgICBkZWYgcGVyZm9ybV9tdWx0aV9saW5lX2xpbnQo
c2VsZiwgY29kZSwgZmlsZV9leHRlbnNpb24pOgotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBF
cnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGxpbmVzID0gY29kZS5zcGxpdCgn
XG4nKQotICAgICAgICBjcHBfc3R5bGUucmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMobGluZXMs
IGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgbGluZXMgPSBjcHBfc3R5bGUuQ2xlYW5zZWRMaW5l
cyhsaW5lcykKLSAgICAgICAgY2xhc3Nfc3RhdGUgPSBjcHBfc3R5bGUuX0NsYXNzU3RhdGUoKQot
ICAgICAgICBmaWxlX3N0YXRlID0gY3BwX3N0eWxlLl9GaWxlU3RhdGUoKQotICAgICAgICBmb3Ig
aSBpbiB4cmFuZ2UobGluZXMubnVtX2xpbmVzKCkpOgotICAgICAgICAgICAgY3BwX3N0eWxlLmNo
ZWNrX3N0eWxlKGxpbmVzLCBpLCBmaWxlX2V4dGVuc2lvbiwgZmlsZV9zdGF0ZSwgZXJyb3JfY29s
bGVjdG9yKQotICAgICAgICAgICAgY3BwX3N0eWxlLmNoZWNrX2Zvcl9ub25fc3RhbmRhcmRfY29u
c3RydWN0cyhsaW5lcywgaSwgY2xhc3Nfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAg
Y2xhc3Nfc3RhdGUuY2hlY2tfZmluaXNoZWQoZXJyb3JfY29sbGVjdG9yKQotICAgICAgICByZXR1
cm4gZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKQotCi0gICAgIyBTaW1pbGFyIHRvIHBlcmZvcm1f
bXVsdGlfbGluZV9saW50LCBidXQgY2FsbHMgY2hlY2tfbGFuZ3VhZ2UgaW5zdGVhZCBvZgotICAg
ICMgY2hlY2tfZm9yX25vbl9zdGFuZGFyZF9jb25zdHJ1Y3RzCi0gICAgZGVmIHBlcmZvcm1fbGFu
Z3VhZ2VfcnVsZXNfY2hlY2soc2VsZiwgZmlsZV9uYW1lLCBjb2RlKToKLSAgICAgICAgZXJyb3Jf
Y29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBpbmNsdWRl
X3N0YXRlID0gY3BwX3N0eWxlLl9JbmNsdWRlU3RhdGUoKQotICAgICAgICBsaW5lcyA9IGNvZGUu
c3BsaXQoJ1xuJykKLSAgICAgICAgY3BwX3N0eWxlLnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRz
KGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGxpbmVzID0gY3BwX3N0eWxlLkNsZWFu
c2VkTGluZXMobGluZXMpCi0gICAgICAgIGV4dCA9IGZpbGVfbmFtZVtmaWxlX25hbWUucmZpbmQo
Jy4nKSArIDE6XQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobGluZXMubnVtX2xpbmVzKCkpOgot
ICAgICAgICAgICAgY3BwX3N0eWxlLmNoZWNrX2xhbmd1YWdlKGZpbGVfbmFtZSwgbGluZXMsIGks
IGV4dCwgaW5jbHVkZV9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIHJldHVybiBlcnJvcl9jb2xsZWN0b3IucmVzdWx0
cygpCi0KLSAgICBkZWYgcGVyZm9ybV9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKHNlbGYsIGNvZGUp
OgotICAgICAgICAiIiJQZXJmb3JtIExpbnQgZnVuY3Rpb24gbGVuZ3RoIGNoZWNrIG9uIGJsb2Nr
IG9mIGNvZGUgYW5kIHJldHVybiB3YXJuaW5ncy4KLQotICAgICAgICBCdWlsZHMgdXAgYW4gYXJy
YXkgb2YgbGluZXMgY29ycmVzcG9uZGluZyB0byB0aGUgY29kZSBhbmQgc3RyaXBzIGNvbW1lbnRz
Ci0gICAgICAgIHVzaW5nIGNwcF9zdHlsZSBmdW5jdGlvbnMuCi0KLSAgICAgICAgRXN0YWJsaXNo
ZXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCBpbnZva2VzIHRoZSBmdW5jdGlvbiBsZW5ndGggY2hl
Y2tpbmcKLSAgICAgICAgZnVuY3Rpb24gZm9sbG93aW5nIGNwcF9zdHlsZSdzIHBhdHRlcm4uCi0K
LSAgICAgICAgQXJnczoKLSAgICAgICAgICBjb2RlOiBDKysgc291cmNlIGNvZGUgZXhwZWN0ZWQg
dG8gZ2VuZXJhdGUgYSB3YXJuaW5nIG1lc3NhZ2UuCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAg
ICAgICBUaGUgYWNjdW11bGF0ZWQgZXJyb3JzLgotICAgICAgICAiIiIKLSAgICAgICAgZXJyb3Jf
Y29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBmdW5jdGlv
bl9zdGF0ZSA9IGNwcF9zdHlsZS5fRnVuY3Rpb25TdGF0ZShzZWxmLm1pbl9jb25maWRlbmNlKQot
ICAgICAgICBsaW5lcyA9IGNvZGUuc3BsaXQoJ1xuJykKLSAgICAgICAgY3BwX3N0eWxlLnJlbW92
ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGxp
bmVzID0gY3BwX3N0eWxlLkNsZWFuc2VkTGluZXMobGluZXMpCi0gICAgICAgIGZvciBpIGluIHhy
YW5nZShsaW5lcy5udW1fbGluZXMoKSk6Ci0gICAgICAgICAgICBjcHBfc3R5bGUuY2hlY2tfZm9y
X2Z1bmN0aW9uX2xlbmd0aHMobGluZXMsIGksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fc3RhdGUsIGVycm9yX2NvbGxlY3RvcikKLSAg
ICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkKLQotICAgIGRlZiBwZXJmb3Jt
X2luY2x1ZGVfd2hhdF95b3VfdXNlKHNlbGYsIGNvZGUsIGZpbGVuYW1lPSdmb28uaCcsIGlvPWNv
ZGVjcyk6Ci0gICAgICAgICMgRmlyc3QsIGJ1aWxkIHVwIHRoZSBpbmNsdWRlIHN0YXRlLgotICAg
ICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAg
ICAgIGluY2x1ZGVfc3RhdGUgPSBjcHBfc3R5bGUuX0luY2x1ZGVTdGF0ZSgpCi0gICAgICAgIGxp
bmVzID0gY29kZS5zcGxpdCgnXG4nKQotICAgICAgICBjcHBfc3R5bGUucmVtb3ZlX211bHRpX2xp
bmVfY29tbWVudHMobGluZXMsIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgbGluZXMgPSBjcHBf
c3R5bGUuQ2xlYW5zZWRMaW5lcyhsaW5lcykKLSAgICAgICAgZmlsZV9leHRlbnNpb24gPSBmaWxl
bmFtZVtmaWxlbmFtZS5yZmluZCgnLicpICsgMTpdCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShs
aW5lcy5udW1fbGluZXMoKSk6Ci0gICAgICAgICAgICBjcHBfc3R5bGUuY2hlY2tfbGFuZ3VhZ2Uo
ZmlsZW5hbWUsIGxpbmVzLCBpLCBmaWxlX2V4dGVuc2lvbiwgaW5jbHVkZV9zdGF0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAg
ICMgV2UgY291bGQgY2xlYXIgdGhlIGVycm9yX2NvbGxlY3RvciBoZXJlLCBidXQgdGhpcyBzaG91
bGQKLSAgICAgICAgIyBhbHNvIGJlIGZpbmUsIHNpbmNlIG91ciBJbmNsdWRlV2hhdFlvdVVzZSB1
bml0dGVzdHMgZG8gbm90Ci0gICAgICAgICMgaGF2ZSBsYW5ndWFnZSBwcm9ibGVtcy4KLQotICAg
ICAgICAjIFNlY29uZCwgbG9vayBmb3IgbWlzc2luZyBpbmNsdWRlcy4KLSAgICAgICAgY3BwX3N0
eWxlLmNoZWNrX2Zvcl9pbmNsdWRlX3doYXRfeW91X3VzZShmaWxlbmFtZSwgbGluZXMsIGluY2x1
ZGVfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXJyb3JfY29sbGVjdG9yLCBpbykKLSAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rvci5y
ZXN1bHRzKCkKLQotICAgICMgUGVyZm9ybSBsaW50IGFuZCBjb21wYXJlIHRoZSBlcnJvciBtZXNz
YWdlIHdpdGggImV4cGVjdGVkX21lc3NhZ2UiLgotICAgIGRlZiBhc3NlcnRfbGludChzZWxmLCBj
b2RlLCBleHBlY3RlZF9tZXNzYWdlLCBmaWxlX25hbWU9J2Zvby5jcHAnKToKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwgc2VsZi5wZXJmb3JtX3NpbmdsZV9saW5l
X2xpbnQoY29kZSwgZmlsZV9uYW1lKSkKLQotICAgIGRlZiBhc3NlcnRfbGludF9vbmVfb2ZfbWFu
eV9lcnJvcnNfcmUoc2VsZiwgY29kZSwgZXhwZWN0ZWRfbWVzc2FnZV9yZSwgZmlsZV9uYW1lPSdm
b28uY3BwJyk6Ci0gICAgICAgIG1lc3NhZ2VzID0gc2VsZi5wZXJmb3JtX3NpbmdsZV9saW5lX2xp
bnQoY29kZSwgZmlsZV9uYW1lKQotICAgICAgICBmb3IgbWVzc2FnZSBpbiBtZXNzYWdlczoKLSAg
ICAgICAgICAgIGlmIHJlLnNlYXJjaChleHBlY3RlZF9tZXNzYWdlX3JlLCBtZXNzYWdlKToKLSAg
ICAgICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3Rl
ZF9tZXNzYWdlX3JlLCBtZXNzYWdlcykKLQotICAgIGRlZiBhc3NlcnRfbXVsdGlfbGluZV9saW50
KHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2UsIGZpbGVfbmFtZT0nZm9vLmgnKToKLSAgICAg
ICAgZmlsZV9leHRlbnNpb24gPSBmaWxlX25hbWVbZmlsZV9uYW1lLnJmaW5kKCcuJykgKyAxOl0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwgc2VsZi5wZXJmb3Jt
X211bHRpX2xpbmVfbGludChjb2RlLCBmaWxlX2V4dGVuc2lvbikpCi0KLSAgICBkZWYgYXNzZXJ0
X211bHRpX2xpbmVfbGludF9yZShzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlX3JlLCBmaWxl
X25hbWU9J2Zvby5oJyk6Ci0gICAgICAgIGZpbGVfZXh0ZW5zaW9uID0gZmlsZV9uYW1lW2ZpbGVf
bmFtZS5yZmluZCgnLicpICsgMTpdCi0gICAgICAgIG1lc3NhZ2UgPSBzZWxmLnBlcmZvcm1fbXVs
dGlfbGluZV9saW50KGNvZGUsIGZpbGVfZXh0ZW5zaW9uKQotICAgICAgICBpZiBub3QgcmUuc2Vh
cmNoKGV4cGVjdGVkX21lc3NhZ2VfcmUsIG1lc3NhZ2UpOgotICAgICAgICAgICAgc2VsZi5mYWls
KCdNZXNzYWdlIHdhczpcbicgKyBtZXNzYWdlICsgJ0V4cGVjdGVkIG1hdGNoIHRvICInICsgZXhw
ZWN0ZWRfbWVzc2FnZV9yZSArICciJykKLQotICAgIGRlZiBhc3NlcnRfbGFuZ3VhZ2VfcnVsZXNf
Y2hlY2soc2VsZiwgZmlsZV9uYW1lLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlKToKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5wZXJmb3JtX2xhbmd1YWdlX3J1bGVzX2NoZWNrKGZpbGVfbmFtZSwgY29kZSkp
Ci0KLSAgICBkZWYgYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKHNlbGYsIGNvZGUsIGV4cGVj
dGVkX21lc3NhZ2UpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZF9tZXNzYWdl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBlcmZvcm1faW5jbHVkZV93aGF0X3lv
dV91c2UoY29kZSkpCi0KLSAgICBkZWYgYXNzZXJ0X2JsYW5rX2xpbmVzX2NoZWNrKHNlbGYsIGxp
bmVzLCBzdGFydF9lcnJvcnMsIGVuZF9lcnJvcnMpOgotICAgICAgICBlcnJvcl9jb2xsZWN0b3Ig
PSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIHNlbGYucHJvY2Vzc19maWxl
X2RhdGEoJ2Zvby5jcHAnLCAnY3BwJywgbGluZXMsIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoCi0gICAgICAgICAgICBzdGFydF9lcnJvcnMsCi0gICAgICAgICAg
ICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpLmNvdW50KAotICAgICAgICAgICAgICAgICdCbGFu
ayBsaW5lIGF0IHRoZSBzdGFydCBvZiBhIGNvZGUgYmxvY2suICBJcyB0aGlzIG5lZWRlZD8nCi0g
ICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvYmxhbmtfbGluZV0gWzJdJykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKAotICAgICAgICAgICAgZW5kX2Vycm9ycywKLSAgICAgICAgICAg
IGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkuY291bnQoCi0gICAgICAgICAgICAgICAgJ0JsYW5r
IGxpbmUgYXQgdGhlIGVuZCBvZiBhIGNvZGUgYmxvY2suICBJcyB0aGlzIG5lZWRlZD8nCi0gICAg
ICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvYmxhbmtfbGluZV0gWzNdJykpCi0KLQotY2xhc3Mg
Q3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgotCi0gICAgIyBUZXN0IGdldCBsaW5lIHdp
ZHRoLgotICAgIGRlZiB0ZXN0X2dldF9saW5lX3dpZHRoKHNlbGYpOgotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscygwLCBjcHBfc3R5bGUuZ2V0X2xpbmVfd2lkdGgoJycpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygxMCwgY3BwX3N0eWxlLmdldF9saW5lX3dpZHRoKHUneCcgKiAxMCkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDE2LCBjcHBfc3R5bGUuZ2V0X2xpbmVfd2lkdGgodSfp
g7186YGTfOW6nHznnIx85pSv5bqBJykpCi0KLSAgICBkZWYgdGVzdF9maW5kX25leHRfbXVsdGlf
bGluZV9jb21tZW50X3N0YXJ0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBj
cHBfc3R5bGUuZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9zdGFydChbJyddLCAwKSkKLQot
ICAgICAgICBsaW5lcyA9IFsnYScsICdiJywgJy8qIGMnXQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscygyLCBjcHBfc3R5bGUuZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9zdGFydChsaW5l
cywgMCkpCi0KLSAgICAgICAgbGluZXMgPSBbJ2NoYXIgYVtdID0gIi8qIjsnXSAgIyBub3QgcmVj
b2duaXplZCBhcyBjb21tZW50LgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBjcHBfc3R5
bGUuZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9zdGFydChsaW5lcywgMCkpCi0KLSAgICBk
ZWYgdGVzdF9maW5kX25leHRfbXVsdGlfbGluZV9jb21tZW50X2VuZChzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoMSwgY3BwX3N0eWxlLmZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1l
bnRfZW5kKFsnJ10sIDApKQotICAgICAgICBsaW5lcyA9IFsnYScsICdiJywgJyBjICovJ10KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMiwgY3BwX3N0eWxlLmZpbmRfbmV4dF9tdWx0aV9saW5l
X2NvbW1lbnRfZW5kKGxpbmVzLCAwKSkKLQotICAgIGRlZiB0ZXN0X3JlbW92ZV9tdWx0aV9saW5l
X2NvbW1lbnRzX2Zyb21fcmFuZ2Uoc2VsZik6Ci0gICAgICAgIGxpbmVzID0gWydhJywgJyAgLyog
Y29tbWVudCAnLCAnICogc3RpbGwgY29tbWVudCcsICcgY29tbWVudCAqLyAgICcsICdiJ10KLSAg
ICAgICAgY3BwX3N0eWxlLnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzX2Zyb21fcmFuZ2UobGlu
ZXMsIDEsIDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsnYScsICcvLyBkdW1teScsICcv
LyBkdW1teScsICcvLyBkdW1teScsICdiJ10sIGxpbmVzKQotCi0gICAgZGVmIHRlc3Rfc3BhY2Vz
X2F0X2VuZF9vZl9saW5lKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAg
ICAgICAgJy8vIEhlbGxvIHRoZXJlICcsCi0gICAgICAgICAgICAnTGluZSBlbmRzIGluIHdoaXRl
c3BhY2UuICBDb25zaWRlciBkZWxldGluZyB0aGVzZSBleHRyYSBzcGFjZXMuJwotICAgICAgICAg
ICAgJyAgW3doaXRlc3BhY2UvZW5kX29mX2xpbmVdIFs0XScpCi0KLSAgICAjIFRlc3QgQy1zdHls
ZSBjYXN0IGNhc2VzLgotICAgIGRlZiB0ZXN0X2NzdHlsZV9jYXN0KHNlbGYpOgotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ2ludCBhID0gKGludCkxLjA7JywKLSAgICAg
ICAgICAgICdVc2luZyBDLXN0eWxlIGNhc3QuICBVc2Ugc3RhdGljX2Nhc3Q8aW50PiguLi4pIGlu
c3RlYWQnCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2FzdGluZ10gWzRdJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdpbnQgKmEgPSAoaW50ICopREVGSU5F
RF9WQUxVRTsnLAotICAgICAgICAgICAgJ1VzaW5nIEMtc3R5bGUgY2FzdC4gIFVzZSByZWludGVy
cHJldF9jYXN0PGludCAqPiguLi4pIGluc3RlYWQnCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxp
dHkvY2FzdGluZ10gWzRdJywgJ2Zvby5jJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAg
ICAgICAgICAgICd1aW50MTYgYSA9ICh1aW50MTYpMS4wOycsCi0gICAgICAgICAgICAnVXNpbmcg
Qy1zdHlsZSBjYXN0LiAgVXNlIHN0YXRpY19jYXN0PHVpbnQxNj4oLi4uKSBpbnN0ZWFkJwotICAg
ICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2Nhc3RpbmddIFs0XScpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoCi0gICAgICAgICAgICAnaW50MzIgYSA9IChpbnQzMikxLjA7JywKLSAgICAgICAg
ICAgICdVc2luZyBDLXN0eWxlIGNhc3QuICBVc2Ugc3RhdGljX2Nhc3Q8aW50MzI+KC4uLikgaW5z
dGVhZCcKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jYXN0aW5nXSBbNF0nKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ3VpbnQ2NCBhID0gKHVpbnQ2NCkxLjA7
JywKLSAgICAgICAgICAgICdVc2luZyBDLXN0eWxlIGNhc3QuICBVc2Ugc3RhdGljX2Nhc3Q8dWlu
dDY0PiguLi4pIGluc3RlYWQnCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2FzdGluZ10g
WzRdJykKLQotICAgICMgVGVzdCB0YWtpbmcgYWRkcmVzcyBvZiBjYXN0cyAocnVudGltZS9jYXN0
aW5nKQotICAgIGRlZiB0ZXN0X3J1bnRpbWVfY2FzdGluZyhzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKLSAgICAgICAgICAgICdpbnQqIHggPSAmc3RhdGljX2Nhc3Q8aW50Kj4oZm9v
KTsnLAotICAgICAgICAgICAgJ0FyZSB5b3UgdGFraW5nIGFuIGFkZHJlc3Mgb2YgYSBjYXN0PyAg
JwotICAgICAgICAgICAgJ1RoaXMgaXMgZGFuZ2Vyb3VzOiBjb3VsZCBiZSBhIHRlbXAgdmFyLiAg
JwotICAgICAgICAgICAgJ1Rha2UgdGhlIGFkZHJlc3MgYmVmb3JlIGRvaW5nIHRoZSBjYXN0LCBy
YXRoZXIgdGhhbiBhZnRlcicKLSAgICAgICAgICAgICcgIFtydW50aW1lL2Nhc3RpbmddIFs0XScp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdpbnQqIHggPSAmZHlu
YW1pY19jYXN0PGludCAqPihmb28pOycsCi0gICAgICAgICAgICBbJ0FyZSB5b3UgdGFraW5nIGFu
IGFkZHJlc3Mgb2YgYSBjYXN0PyAgJwotICAgICAgICAgICAgICdUaGlzIGlzIGRhbmdlcm91czog
Y291bGQgYmUgYSB0ZW1wIHZhci4gICcKLSAgICAgICAgICAgICAnVGFrZSB0aGUgYWRkcmVzcyBi
ZWZvcmUgZG9pbmcgdGhlIGNhc3QsIHJhdGhlciB0aGFuIGFmdGVyJwotICAgICAgICAgICAgICcg
IFtydW50aW1lL2Nhc3RpbmddIFs0XScsCi0gICAgICAgICAgICAgJ0RvIG5vdCB1c2UgZHluYW1p
Y19jYXN0PD4uICBJZiB5b3UgbmVlZCB0byBjYXN0IHdpdGhpbiBhIGNsYXNzICcKLSAgICAgICAg
ICAgICAnaGllcmFyY2h5LCB1c2Ugc3RhdGljX2Nhc3Q8PiB0byB1cGNhc3QuICBHb29nbGUgZG9l
c25cJ3Qgc3VwcG9ydCAnCi0gICAgICAgICAgICAgJ1JUVEkuICBbcnVudGltZS9ydHRpXSBbNV0n
XSkKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ2ludCogeCA9ICZy
ZWludGVycHJldF9jYXN0PGludCAqPihmb28pOycsCi0gICAgICAgICAgICAnQXJlIHlvdSB0YWtp
bmcgYW4gYWRkcmVzcyBvZiBhIGNhc3Q/ICAnCi0gICAgICAgICAgICAnVGhpcyBpcyBkYW5nZXJv
dXM6IGNvdWxkIGJlIGEgdGVtcCB2YXIuICAnCi0gICAgICAgICAgICAnVGFrZSB0aGUgYWRkcmVz
cyBiZWZvcmUgZG9pbmcgdGhlIGNhc3QsIHJhdGhlciB0aGFuIGFmdGVyJwotICAgICAgICAgICAg
JyAgW3J1bnRpbWUvY2FzdGluZ10gWzRdJykKLQotICAgICAgICAjIEl0J3MgT0sgdG8gY2FzdCBh
biBhZGRyZXNzLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ2ludCog
eCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50ICo+KCZmb28pOycsCi0gICAgICAgICAgICAnJykKLQot
ICAgIGRlZiB0ZXN0X3J1bnRpbWVfc2VsZmluaXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoCi0gICAgICAgICAgICAnRm9vOjpGb28oQmFyIHIsIEJlbCBsKSA6IHJfKHJfKSwgbF8o
bF8pIHsgfScsCi0gICAgICAgICAgICAnWW91IHNlZW0gdG8gYmUgaW5pdGlhbGl6aW5nIGEgbWVt
YmVyIHZhcmlhYmxlIHdpdGggaXRzZWxmLicKLSAgICAgICAgICAgICcgIFtydW50aW1lL2luaXRd
IFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnRm9vOjpGb28o
QmFyIHIsIEJlbCBsKSA6IHJfKHIpLCBsXyhsKSB7IH0nLAotICAgICAgICAgICAgJycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnRm9vOjpGb28oQmFyIHIpIDogcl8o
ciksIGxfKHJfKSwgbGxfKGxfKSB7IH0nLAotICAgICAgICAgICAgJycpCi0KLSAgICBkZWYgdGVz
dF9ydW50aW1lX3J0dGkoc2VsZik6Ci0gICAgICAgIHN0YXRlbWVudCA9ICdpbnQqIHggPSBkeW5h
bWljX2Nhc3Q8aW50Kj4oJmZvbyk7JwotICAgICAgICBlcnJvcl9tZXNzYWdlID0gKAotICAgICAg
ICAgICAgJ0RvIG5vdCB1c2UgZHluYW1pY19jYXN0PD4uICBJZiB5b3UgbmVlZCB0byBjYXN0IHdp
dGhpbiBhIGNsYXNzICcKLSAgICAgICAgICAgICdoaWVyYXJjaHksIHVzZSBzdGF0aWNfY2FzdDw+
IHRvIHVwY2FzdC4gIEdvb2dsZSBkb2VzblwndCBzdXBwb3J0ICcKLSAgICAgICAgICAgICdSVFRJ
LiAgW3J1bnRpbWUvcnR0aV0gWzVdJykKLSAgICAgICAgIyBkeW5hbWljX2Nhc3QgaXMgZGlzYWxs
b3dlZCBpbiBtb3N0IGZpbGVzLgotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19j
aGVjaygnZm9vLmNwcCcsIHN0YXRlbWVudCwgZXJyb3JfbWVzc2FnZSkKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5oJywgc3RhdGVtZW50LCBlcnJvcl9tZXNz
YWdlKQotCi0gICAgIyBXZSBjYW5ub3QgdGVzdCB0aGlzIGZ1bmN0aW9uYWxpdHkgYmVjYXVzZSBv
ZiBkaWZmZXJlbmNlIG9mCi0gICAgIyBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIEFueXdheSwgd2Ug
bWF5IG5ldmVyIGVuYWJsZSB0aGlzLgotICAgICMKLSAgICAjICMgVGVzdCBmb3IgdW5uYW1lZCBh
cmd1bWVudHMgaW4gYSBtZXRob2QuCi0gICAgIyBkZWYgdGVzdF9jaGVja19mb3JfdW5uYW1lZF9w
YXJhbXMoc2VsZik6Ci0gICAgIyAgIG1lc3NhZ2UgPSAoJ0FsbCBwYXJhbWV0ZXJzIHNob3VsZCBi
ZSBuYW1lZCBpbiBhIGZ1bmN0aW9uJwotICAgICMgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0
eS9mdW5jdGlvbl0gWzNdJykKLSAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndmlydHVhbCB2b2lk
IEEoaW50KikgY29uc3Q7JywgbWVzc2FnZSkKLSAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndmly
dHVhbCB2b2lkIEIodm9pZCAoKmZuKShpbnQqKSk7JywgbWVzc2FnZSkKLSAgICAjICAgc2VsZi5h
c3NlcnRfbGludCgndmlydHVhbCB2b2lkIEMoaW50Kik7JywgbWVzc2FnZSkKLSAgICAjICAgc2Vs
Zi5hc3NlcnRfbGludCgndm9pZCAqKCpmKSh2b2lkICopID0geDsnLCBtZXNzYWdlKQotICAgICMg
ICBzZWxmLmFzc2VydF9saW50KCd2b2lkIE1ldGhvZChjaGFyKikgeycsIG1lc3NhZ2UpCi0gICAg
IyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgTWV0aG9kKGNoYXIqKTsnLCBtZXNzYWdlKQotICAg
ICMgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIE1ldGhvZChjaGFyKiAvKngqLyk7JywgbWVzc2Fn
ZSkKLSAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndHlwZWRlZiB2b2lkICgqTWV0aG9kKShpbnQz
Mik7JywgbWVzc2FnZSkKLSAgICAjICAgc2VsZi5hc3NlcnRfbGludCgnc3RhdGljIHZvaWQgb3Bl
cmF0b3IgZGVsZXRlW10odm9pZCopIHRocm93KCk7JywgbWVzc2FnZSkKLSAgICAjIAotICAgICMg
ICBzZWxmLmFzc2VydF9saW50KCd2aXJ0dWFsIHZvaWQgRChpbnQqIHApOycsICcnKQotICAgICMg
ICBzZWxmLmFzc2VydF9saW50KCd2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiB4KSB0aHJvdygp
OycsICcnKQotICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIE1ldGhvZChjaGFyKiB4KVxu
eycsICcnKQotICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIE1ldGhvZChjaGFyKiAvKngq
LylcbnsnLCAnJykKLSAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCBNZXRob2QoY2hhciog
eCk7JywgJycpCi0gICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5cGVkZWYgdm9pZCAoKk1ldGhv
ZCkoaW50MzIgeCk7JywgJycpCi0gICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0YXRpYyB2b2lk
IG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHgpIHRocm93KCk7JywgJycpCi0gICAgIyAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ3N0YXRpYyB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIC8qeCovKSB0
aHJvdygpOycsICcnKQotICAgICMgCi0gICAgIyAgICMgVGhpcyBvbmUgc2hvdWxkIHRlY2huaWNh
bGx5IHdhcm4sIGJ1dCBkb2Vzbid0IGJlY2F1c2UgdGhlIGZ1bmN0aW9uCi0gICAgIyAgICMgcG9p
bnRlciBpcyBjb25mdXNpbmcuCi0gICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZpcnR1YWwgdm9p
ZCBFKHZvaWQgKCpmbikoaW50KiBwKSk7JywgJycpCi0KLSAgICAjIFRlc3QgZGVwcmVjYXRlZCBj
YXN0cyBzdWNoIGFzIGludChkKQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfY2FzdChzZWxmKToK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdpbnQgYSA9IGludCgyLjIp
OycsCi0gICAgICAgICAgICAnVXNpbmcgZGVwcmVjYXRlZCBjYXN0aW5nIHN0eWxlLiAgJwotICAg
ICAgICAgICAgJ1VzZSBzdGF0aWNfY2FzdDxpbnQ+KC4uLikgaW5zdGVhZCcKLSAgICAgICAgICAg
ICcgIFtyZWFkYWJpbGl0eS9jYXN0aW5nXSBbNF0nKQotICAgICAgICAjIENoZWNrcyBmb3IgZmFs
c2UgcG9zaXRpdmVzLi4uCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAn
aW50IGEgPSBpbnQoKTsgLy8gQ29uc3RydWN0b3IsIG8uay4nLAotICAgICAgICAgICAgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnWDo6WCgpIDogYShpbnQoKSkg
e30gLy8gZGVmYXVsdCBDb25zdHJ1Y3Rvciwgby5rLicsCi0gICAgICAgICAgICAnJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdvcGVyYXRvciBib29sKCk7IC8vIENv
bnZlcnNpb24gb3BlcmF0b3IsIG8uay4nLAotICAgICAgICAgICAgJycpCi0KLSAgICAjIFRoZSBz
ZWNvbmQgcGFyYW1ldGVyIHRvIGEgZ01vY2sgbWV0aG9kIGRlZmluaXRpb24gaXMgYSBmdW5jdGlv
biBzaWduYXR1cmUKLSAgICAjIHRoYXQgb2Z0ZW4gbG9va3MgbGlrZSBhIGJhZCBjYXN0IGJ1dCBz
aG91bGQgbm90IHBpY2tlZCB1cCBieSBsaW50LgotICAgIGRlZiB0ZXN0X21vY2tfbWV0aG9kKHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ01PQ0tfTUVUSE9E
MChtZXRob2QsIGludCgpKTsnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoCi0gICAgICAgICAgICAnTU9DS19DT05TVF9NRVRIT0QxKG1ldGhvZCwgZmxvYXQoc3Ry
aW5nKSk7JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAg
ICAgICAgICAgJ01PQ0tfQ09OU1RfTUVUSE9EMl9UKG1ldGhvZCwgZG91YmxlKGZsb2F0LCBmbG9h
dCkpOycsCi0gICAgICAgICAgICAnJykKLQotICAgICMgVGVzdCBzaXplb2YodHlwZSkgY2FzZXMu
Ci0gICAgZGVmIHRlc3Rfc2l6ZW9mX3R5cGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoCi0gICAgICAgICAgICAnc2l6ZW9mKGludCk7JywKLSAgICAgICAgICAgICdVc2luZyBzaXpl
b2YodHlwZSkuICBVc2Ugc2l6ZW9mKHZhcm5hbWUpIGluc3RlYWQgaWYgcG9zc2libGUnCi0gICAg
ICAgICAgICAnICBbcnVudGltZS9zaXplb2ZdIFsxXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoCi0gICAgICAgICAgICAnc2l6ZW9mKGludCAqKTsnLAotICAgICAgICAgICAgJ1VzaW5nIHNp
emVvZih0eXBlKS4gIFVzZSBzaXplb2YodmFybmFtZSkgaW5zdGVhZCBpZiBwb3NzaWJsZScKLSAg
ICAgICAgICAgICcgIFtydW50aW1lL3NpemVvZl0gWzFdJykKLQotICAgICMgVGVzdCB0eXBlZGVm
IGNhc2VzLiAgVGhlcmUgd2FzIGEgYnVnIHRoYXQgY3BwX3N0eWxlIG1pc2lkZW50aWZpZWQKLSAg
ICAjIHR5cGVkZWYgZm9yIHBvaW50ZXIgdG8gZnVuY3Rpb24gYXMgQy1zdHlsZSBjYXN0IGFuZCBw
cm9kdWNlZAotICAgICMgZmFsc2UtcG9zaXRpdmUgZXJyb3IgbWVzc2FnZXMuCi0gICAgZGVmIHRl
c3RfdHlwZWRlZl9mb3JfcG9pbnRlcl90b19mdW5jdGlvbihzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKLSAgICAgICAgICAgICd0eXBlZGVmIHZvaWQgKCpGdW5jKShpbnQgeCk7JywK
LSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAg
J3R5cGVkZWYgdm9pZCAoKkZ1bmMpKGludCAqeCk7JywKLSAgICAgICAgICAgICcnKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ3R5cGVkZWYgdm9pZCBGdW5jKGludCB4
KTsnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAg
ICAgICAndHlwZWRlZiB2b2lkIEZ1bmMoaW50ICp4KTsnLAotICAgICAgICAgICAgJycpCi0KLSAg
ICBkZWYgdGVzdF9pbmNsdWRlX3doYXRfeW91X3VzZV9ub19pbXBsZW1lbnRhdGlvbl9maWxlcyhz
ZWxmKToKLSAgICAgICAgY29kZSA9ICdzdGQ6OnZlY3RvcjxpbnQ+IGZvbzsnCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKCdBZGQgI2luY2x1ZGUgPHZlY3Rvcj4gZm9yIHZlY3Rvcjw+JwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0
XScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGVyZm9ybV9pbmNsdWRlX3doYXRf
eW91X3VzZShjb2RlLCAnZm9vLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJycsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGVyZm9ybV9pbmNsdWRlX3doYXRfeW91X3Vz
ZShjb2RlLCAnZm9vLmNwcCcpKQotCi0gICAgZGVmIHRlc3RfaW5jbHVkZV93aGF0X3lvdV91c2Uo
c2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAg
ICAgICAgJycnI2luY2x1ZGUgPHZlY3Rvcj4KLSAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGlu
dD4gZm9vOwotICAgICAgICAgICAgJycnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAgJycnI2luY2x1ZGUgPG1h
cD4KLSAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxpbnQsaW50PiBmb287Ci0gICAgICAgICAgICAn
JycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lv
dV91c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSA8bXVsdGltYXA+Ci0gICAgICAgICAgICAg
ICBzdGQ6OnBhaXI8aW50LGludD4gZm9vOwotICAgICAgICAgICAgJycnLAotICAgICAgICAgICAg
JycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAg
ICAgJycnI2luY2x1ZGUgPGhhc2hfbWFwPgotICAgICAgICAgICAgICAgc3RkOjpwYWlyPGludCxp
bnQ+IGZvbzsKLSAgICAgICAgICAgICcnJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxm
LmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlIDx1
dGlsaXR5PgotICAgICAgICAgICAgICAgc3RkOjpwYWlyPGludCxpbnQ+IGZvbzsKLSAgICAgICAg
ICAgICcnJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3do
YXRfeW91X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlIDx2ZWN0b3I+Ci0gICAgICAgICAg
ICAgICBERUNMQVJFX3N0cmluZyhmb29iYXIpOwotICAgICAgICAgICAgJycnLAotICAgICAgICAg
ICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAg
ICAgICAgJycnI2luY2x1ZGUgPHZlY3Rvcj4KLSAgICAgICAgICAgICAgIERFRklORV9zdHJpbmco
Zm9vYmFyLCAiIiwgIiIpOwotICAgICAgICAgICAgJycnLAotICAgICAgICAgICAgJycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAgJycnI2lu
Y2x1ZGUgPHZlY3Rvcj4KLSAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxpbnQsaW50PiBmb287Ci0g
ICAgICAgICAgICAnJycsCi0gICAgICAgICAgICAnQWRkICNpbmNsdWRlIDx1dGlsaXR5PiBmb3Ig
cGFpcjw+JwotICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0n
KQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAg
ICcnJyNpbmNsdWRlICJiYXNlL2Zvb2Jhci5oIgotICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8
aW50PiBmb287Ci0gICAgICAgICAgICAnJycsCi0gICAgICAgICAgICAnQWRkICNpbmNsdWRlIDx2
ZWN0b3I+IGZvciB2ZWN0b3I8PicKLSAgICAgICAgICAgICcgIFtidWlsZC9pbmNsdWRlX3doYXRf
eW91X3VzZV0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2Uo
Ci0gICAgICAgICAgICAnJycjaW5jbHVkZSA8dmVjdG9yPgotICAgICAgICAgICAgICAgc3RkOjpz
ZXQ8aW50PiBmb287Ci0gICAgICAgICAgICAnJycsCi0gICAgICAgICAgICAnQWRkICNpbmNsdWRl
IDxzZXQ+IGZvciBzZXQ8PicKLSAgICAgICAgICAgICcgIFtidWlsZC9pbmNsdWRlX3doYXRfeW91
X3VzZV0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCi0g
ICAgICAgICAgICAnJycjaW5jbHVkZSAiYmFzZS9mb29iYXIuaCIKLSAgICAgICAgICAgICAgaGFz
aF9tYXA8aW50LCBpbnQ+IGZvb2JhcjsKLSAgICAgICAgICAgICcnJywKLSAgICAgICAgICAgICdB
ZGQgI2luY2x1ZGUgPGhhc2hfbWFwPiBmb3IgaGFzaF9tYXA8PicKLSAgICAgICAgICAgICcgIFti
dWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5j
bHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSAiYmFzZS9mb29iYXIu
aCIKLSAgICAgICAgICAgICAgIGJvb2wgZm9vYmFyID0gc3RkOjpsZXNzPGludD4oMCwxKTsKLSAg
ICAgICAgICAgICcnJywKLSAgICAgICAgICAgICdBZGQgI2luY2x1ZGUgPGZ1bmN0aW9uYWw+IGZv
ciBsZXNzPD4nCi0gICAgICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0
XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAg
ICAgJycnI2luY2x1ZGUgImJhc2UvZm9vYmFyLmgiCi0gICAgICAgICAgICAgICBib29sIGZvb2Jh
ciA9IG1pbjxpbnQ+KDAsMSk7Ci0gICAgICAgICAgICAnJycsCi0gICAgICAgICAgICAnQWRkICNp
bmNsdWRlIDxhbGdvcml0aG0+IGZvciBtaW4gIFtidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0g
WzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAg
ICAgICAndm9pZCBhKGNvbnN0IHN0cmluZyAmZm9vYmFyKTsnLAotICAgICAgICAgICAgJ0FkZCAj
aW5jbHVkZSA8c3RyaW5nPiBmb3Igc3RyaW5nICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2Vd
IFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAg
ICAgICAgJycnI2luY2x1ZGUgImJhc2UvZm9vYmFyLmgiCi0gICAgICAgICAgICAgICBib29sIGZv
b2JhciA9IHN3YXAoMCwxKTsKLSAgICAgICAgICAgICcnJywKLSAgICAgICAgICAgICdBZGQgI2lu
Y2x1ZGUgPGFsZ29yaXRobT4gZm9yIHN3YXAgIFtidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0g
WzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAg
ICAgICAnJycjaW5jbHVkZSAiYmFzZS9mb29iYXIuaCIKLSAgICAgICAgICAgICAgIGJvb2wgZm9v
YmFyID0gdHJhbnNmb3JtKGEuYmVnaW4oKSwgYS5lbmQoKSwgYi5zdGFydCgpLCBGb28pOwotICAg
ICAgICAgICAgJycnLAotICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8YWxnb3JpdGhtPiBmb3Ig
dHJhbnNmb3JtICAnCi0gICAgICAgICAgICAnW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBb
NF0nKQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAg
ICAgICcnJyNpbmNsdWRlICJiYXNlL2Zvb2Jhci5oIgotICAgICAgICAgICAgICAgYm9vbCBmb29i
YXIgPSBtaW5fZWxlbWVudChhLmJlZ2luKCksIGEuZW5kKCkpOwotICAgICAgICAgICAgJycnLAot
ICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8YWxnb3JpdGhtPiBmb3IgbWluX2VsZW1lbnQgICcK
LSAgICAgICAgICAgICdbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAgJycnZm9vLT5z
d2FwKDAsMSk7Ci0gICAgICAgICAgICAgICBmb28uc3dhcCgwLDEpOwotICAgICAgICAgICAgJycn
LAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3Vf
dXNlKAotICAgICAgICAgICAgJycnI2luY2x1ZGUgPHN0cmluZz4KLSAgICAgICAgICAgICAgIHZv
aWQgYShjb25zdCBzdGQ6Om11bHRpbWFwPGludCxzdHJpbmc+ICZmb29iYXIpOwotICAgICAgICAg
ICAgJycnLAotICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8bWFwPiBmb3IgbXVsdGltYXA8PicK
LSAgICAgICAgICAgICcgIFtidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAnJycjaW5j
bHVkZSA8cXVldWU+Ci0gICAgICAgICAgICAgICB2b2lkIGEoY29uc3Qgc3RkOjpwcmlvcml0eV9x
dWV1ZTxpbnQ+ICZmb29iYXIpOwotICAgICAgICAgICAgJycnLAotICAgICAgICAgICAgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAgICcn
JyNpbmNsdWRlICJiYXNlL2Jhc2ljdHlwZXMuaCIKLSAgICAgICAgICAgICAgICAjaW5jbHVkZSAi
YmFzZS9wb3J0LmgiCi0gICAgICAgICAgICAgICAgI2luY2x1ZGUgPGFzc2VydC5oPgotICAgICAg
ICAgICAgICAgICNpbmNsdWRlIDxzdHJpbmc+Ci0gICAgICAgICAgICAgICAgI2luY2x1ZGUgPHZl
Y3Rvcj4KLSAgICAgICAgICAgICAgICB2ZWN0b3I8c3RyaW5nPiBoYWpvYTsnJycsICcnKQotICAg
ICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcnJyNp
bmNsdWRlIDxzdHJpbmc+Ci0gICAgICAgICAgICAgICBpbnQgaSA9IG51bWVyaWNfbGltaXRzPGlu
dD46Om1heCgpCi0gICAgICAgICAgICAnJycsCi0gICAgICAgICAgICAnQWRkICNpbmNsdWRlIDxs
aW1pdHM+IGZvciBudW1lcmljX2xpbWl0czw+JwotICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1
ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRf
eW91X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlIDxsaW1pdHM+Ci0gICAgICAgICAgICAg
ICBpbnQgaSA9IG51bWVyaWNfbGltaXRzPGludD46Om1heCgpCi0gICAgICAgICAgICAnJycsCi0g
ICAgICAgICAgICAnJykKLQotICAgICAgICAjIFRlc3QgdGhlIFVwZGF0ZUluY2x1ZGVTdGF0ZSBj
b2RlIHBhdGguCi0gICAgICAgIG1vY2tfaGVhZGVyX2NvbnRlbnRzID0gWycjaW5jbHVkZSAiYmxh
aC9mb28uaCInLCAnI2luY2x1ZGUgImJsYWgvYmFyLmgiJ10KLSAgICAgICAgbWVzc2FnZSA9IHNl
bGYucGVyZm9ybV9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcjaW5jbHVkZSAi
Y29uZmlnLmgiXG4nCi0gICAgICAgICAgICAnI2luY2x1ZGUgImJsYWgvYS5oIlxuJywKLSAgICAg
ICAgICAgIGZpbGVuYW1lPSdibGFoL2EuY3BwJywKLSAgICAgICAgICAgIGlvPU1vY2tJbyhtb2Nr
X2hlYWRlcl9jb250ZW50cykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1lc3NhZ2UsICcn
KQotCi0gICAgICAgIG1vY2tfaGVhZGVyX2NvbnRlbnRzID0gWycjaW5jbHVkZSA8c2V0PiddCi0g
ICAgICAgIG1lc3NhZ2UgPSBzZWxmLnBlcmZvcm1faW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAg
ICAgICAgICAnJycjaW5jbHVkZSAiY29uZmlnLmgiCi0gICAgICAgICAgICAgICAjaW5jbHVkZSAi
YmxhaC9hLmgiCi0KLSAgICAgICAgICAgICAgIHN0ZDo6c2V0PGludD4gZm9vOycnJywKLSAgICAg
ICAgICAgIGZpbGVuYW1lPSdibGFoL2EuY3BwJywKLSAgICAgICAgICAgIGlvPU1vY2tJbyhtb2Nr
X2hlYWRlcl9jb250ZW50cykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1lc3NhZ2UsICcn
KQotCi0gICAgICAgICMgSWYgdGhlcmUncyBqdXN0IGEgLmNwcCBhbmQgdGhlIGhlYWRlciBjYW4n
dCBiZSBmb3VuZCB0aGVuIGl0J3Mgb2suCi0gICAgICAgIG1lc3NhZ2UgPSBzZWxmLnBlcmZvcm1f
aW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSAiY29uZmlnLmgi
Ci0gICAgICAgICAgICAgICAjaW5jbHVkZSAiYmxhaC9hLmgiCi0KLSAgICAgICAgICAgICAgIHN0
ZDo6c2V0PGludD4gZm9vOycnJywKLSAgICAgICAgICAgIGZpbGVuYW1lPSdibGFoL2EuY3BwJykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWVzc2FnZSwgJycpCi0KLSAgICAgICAgIyBNYWtl
IHN1cmUgd2UgZmluZCB0aGUgaGVhZGVycyB3aXRoIHJlbGF0aXZlIHBhdGhzLgotICAgICAgICBt
b2NrX2hlYWRlcl9jb250ZW50cyA9IFsnJ10KLSAgICAgICAgbWVzc2FnZSA9IHNlbGYucGVyZm9y
bV9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlICJjb25maWcu
aCIKLSAgICAgICAgICAgICAgICNpbmNsdWRlICIlcy9hLmgiCi0KLSAgICAgICAgICAgICAgIHN0
ZDo6c2V0PGludD4gZm9vOycnJyAlIG9zLnBhdGguYmFzZW5hbWUob3MuZ2V0Y3dkKCkpLAotICAg
ICAgICAgICAgZmlsZW5hbWU9J2EuY3BwJywKLSAgICAgICAgICAgIGlvPU1vY2tJbyhtb2NrX2hl
YWRlcl9jb250ZW50cykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1lc3NhZ2UsICdBZGQg
I2luY2x1ZGUgPHNldD4gZm9yIHNldDw+ICAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCi0KLSAgICBkZWYgdGVz
dF9maWxlc19iZWxvbmdfdG9fc2FtZV9tb2R1bGUoc2VsZik6Ci0gICAgICAgIGYgPSBjcHBfc3R5
bGUuZmlsZXNfYmVsb25nX3RvX3NhbWVfbW9kdWxlCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KChUcnVlLCAnJyksIGYoJ2EuY3BwJywgJ2EuaCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cygoVHJ1ZSwgJycpLCBmKCdiYXNlL2dvb2dsZS5jcHAnLCAnYmFzZS9nb29nbGUuaCcpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscygoVHJ1ZSwgJycpLCBmKCdiYXNlL2dvb2dsZV90ZXN0LmNw
cCcsICdiYXNlL2dvb2dsZS5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChUcnVlLCAn
JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGYoJ2Jhc2UvZ29vZ2xlX3VuaXR0ZXN0LmNw
cCcsICdiYXNlL2dvb2dsZS5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChUcnVlLCAn
JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGYoJ2Jhc2UvaW50ZXJuYWwvZ29vZ2xlX3Vu
aXR0ZXN0LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UvcHVibGljL2dv
b2dsZS5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChUcnVlLCAneHh4L3l5eS8nKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgZigneHh4L3l5eS9iYXNlL2ludGVybmFsL2dvb2ds
ZV91bml0dGVzdC5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXNlL3B1Ymxp
Yy9nb29nbGUuaCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoVHJ1ZSwgJ3h4eC95eXkv
JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGYoJ3h4eC95eXkvYmFzZS9nb29nbGVfdW5p
dHRlc3QuY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFzZS9wdWJsaWMvZ29v
Z2xlLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICcnKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgZignYmFzZS9nb29nbGVfdW5pdHRlc3QuY3BwJywgJ2Jhc2UvZ29v
Z2xlLWlubC5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChUcnVlLCAnL2hvbWUvYnVp
bGQvZ29vZ2xlMy8nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZignL2hvbWUvYnVpbGQv
Z29vZ2xlMy9iYXNlL2dvb2dsZS5jcHAnLCAnYmFzZS9nb29nbGUuaCcpKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKChGYWxzZSwgJycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBm
KCcvaG9tZS9idWlsZC9nb29nbGUzL2Jhc2UvZ29vZ2xlLmNwcCcsICdiYXN1L2dvb2dsZS5oJykp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChGYWxzZSwgJycpLCBmKCdhLmNwcCcsICdiLmgn
KSkKLQotICAgIGRlZiB0ZXN0X2NsZWFuc2VfbGluZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoJ2ludCBmb28gPSAwOyAgJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3Bw
X3N0eWxlLmNsZWFuc2VfY29tbWVudHMoJ2ludCBmb28gPSAwOyAgLy8gZGFuZ2VyIScpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscygnaW50IG8gPSAwOycsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGNwcF9zdHlsZS5jbGVhbnNlX2NvbW1lbnRzKCdpbnQgLyogZm9vICovIG8gPSAwOycp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnZm9vKGludCBhLCBpbnQgYik7JywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLmNsZWFuc2VfY29tbWVudHMoJ2ZvbyhpbnQg
YSAvKiBhYmMgKi8sIGludCBiKTsnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZihhLCBi
KTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5jbGVhbnNlX2NvbW1lbnRz
KCdmKGEsIC8qIG5hbWUgKi8gYik7JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2YoYSwg
Yik7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuY2xlYW5zZV9jb21tZW50
cygnZihhIC8qIG5hbWUgKi8sIGIpOycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmKGEs
IGIpOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLmNsZWFuc2VfY29tbWVu
dHMoJ2YoYSwgLyogbmFtZSAqL2IpOycpKQotCi0gICAgZGVmIHRlc3RfbXVsdGlfbGluZV9jb21t
ZW50cyhzZWxmKToKLSAgICAgICAgIyBtaXNzaW5nIGV4cGxpY2l0IGlzIGJhZAotICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICByJycnaW50IGEgPSAwOwot
ICAgICAgICAgICAgICAgIC8qIG11bHRpLWxpbmVyCi0gICAgICAgICAgICAgICAgY2xhc3MgRm9v
IHsKLSAgICAgICAgICAgICAgICBGb28oaW50IGYpOyAgLy8gc2hvdWxkIGNhdXNlIGEgbGludCB3
YXJuaW5nIGluIGNvZGUKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAqLyAnJycsCi0g
ICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAg
ICAgICByJycnLyogaW50IGEgPSAwOyBtdWx0aS1saW5lcgotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IGludCBiID0gMDsnJycsCi0gICAgICAnQ291bGQgbm90IGZpbmQgZW5kIG9mIG11bHRpLWxp
bmUgY29tbWVudCcKLSAgICAgICcgIFtyZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudF0gWzVd
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KHInJycgICAgLyogbXVsdGkt
bGluZSBjb21tZW50JycnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Nv
dWxkIG5vdCBmaW5kIGVuZCBvZiBtdWx0aS1saW5lIGNvbW1lbnQnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvbXVsdGlsaW5lX2NvbW1lbnRdIFs1
XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludChyJycnICAgIC8vIC8qIGNv
bW1lbnQsIGJ1dCBub3QgbXVsdGktbGluZScnJywgJycpCi0KLSAgICBkZWYgdGVzdF9tdWx0aWxp
bmVfc3RyaW5ncyhzZWxmKToKLSAgICAgICAgbXVsdGlsaW5lX3N0cmluZ19lcnJvcl9tZXNzYWdl
ID0gKAotICAgICAgICAgICAgJ011bHRpLWxpbmUgc3RyaW5nICgiLi4uIikgZm91bmQuICBUaGlz
IGxpbnQgc2NyaXB0IGRvZXNuXCd0ICcKLSAgICAgICAgICAgICdkbyB3ZWxsIHdpdGggc3VjaCBz
dHJpbmdzLCBhbmQgbWF5IGdpdmUgYm9ndXMgd2FybmluZ3MuICBUaGV5XCdyZSAnCi0gICAgICAg
ICAgICAndWdseSBhbmQgdW5uZWNlc3NhcnksIGFuZCB5b3Ugc2hvdWxkIHVzZSBjb25jYXRlbmF0
aW9uIGluc3RlYWQiLicKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9tdWx0aWxpbmVfc3Ry
aW5nXSBbNV0nKQotCi0gICAgICAgIGZpbGVfcGF0aCA9ICdteWRpci9mb28uY3BwJwotCi0gICAg
ICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAg
ICAgc2VsZi5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdjcHAnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsnY29uc3QgY2hhciogc3RyID0gIlRoaXMgaXMgYVxcJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBtdWx0aWxpbmUgc3RyaW5nLiI7J10sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygKLSAgICAgICAgICAgIDIsICAjIE9uZSBwZXIgbGluZS4KLSAgICAg
ICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpLmNvdW50KG11bHRpbGluZV9zdHJp
bmdfZXJyb3JfbWVzc2FnZSkpCi0KLSAgICAjIFRlc3Qgbm9uLWV4cGxpY2l0IHNpbmdsZS1hcmd1
bWVudCBjb25zdHJ1Y3RvcnMKLSAgICBkZWYgdGVzdF9leHBsaWNpdF9zaW5nbGVfYXJndW1lbnRf
Y29uc3RydWN0b3JzKHNlbGYpOgotICAgICAgICAjIG1pc3NpbmcgZXhwbGljaXQgaXMgYmFkCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2NsYXNz
IEZvbyB7Ci0gICAgICAgICAgICAgICAgIEZvbyhpbnQgZik7Ci0gICAgICAgICAgICAgICB9Oycn
JywKLSAgICAgICAgICAgICdTaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHNob3VsZCBiZSBt
YXJrZWQgZXhwbGljaXQuJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvZXhwbGljaXRdIFs1XScp
Ci0gICAgICAgICMgbWlzc2luZyBleHBsaWNpdCBpcyBiYWQsIGV2ZW4gd2l0aCB3aGl0ZXNwYWNl
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2Ns
YXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAgIEZvbyAoaW50IGYpOwotICAgICAgICAgICAgICAg
fTsnJycsCi0gICAgICAgICAgICBbJ0V4dHJhIHNwYWNlIGJlZm9yZSAoIGluIGZ1bmN0aW9uIGNh
bGwgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzRdJywKLSAgICAgICAgICAgICAnU2luZ2xlLWFyZ3Vt
ZW50IGNvbnN0cnVjdG9ycyBzaG91bGQgYmUgbWFya2VkIGV4cGxpY2l0LicKLSAgICAgICAgICAg
ICAnICBbcnVudGltZS9leHBsaWNpdF0gWzVdJ10pCi0gICAgICAgICMgbWlzc2luZyBleHBsaWNp
dCwgd2l0aCBkaXN0cmFjdGluZyBjb21tZW50LCBpcyBzdGlsbCBiYWQKLSAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAg
ICAgICAgICAgICAgRm9vKGludCBmKTsgLy8gc2ltcGxlciB0aGFuIEZvbyhibGFyZ2gsIGJsYXJn
KQotICAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnU2luZ2xlLWFyZ3VtZW50IGNv
bnN0cnVjdG9ycyBzaG91bGQgYmUgbWFya2VkIGV4cGxpY2l0LicKLSAgICAgICAgICAgICcgIFty
dW50aW1lL2V4cGxpY2l0XSBbNV0nKQotICAgICAgICAjIG1pc3NpbmcgZXhwbGljaXQsIHdpdGgg
cXVhbGlmaWVkIGNsYXNzbmFtZQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQo
Ci0gICAgICAgICAgICAnJydjbGFzcyBRdWFsaWZpZXI6OkFub3RoZXJPbmU6OkZvbyB7Ci0gICAg
ICAgICAgICAgICAgIEZvbyhpbnQgZik7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAg
ICAgICdTaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHNob3VsZCBiZSBtYXJrZWQgZXhwbGlj
aXQuJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvZXhwbGljaXRdIFs1XScpCi0gICAgICAgICMg
c3RydWN0cyBhcmUgY2F1Z2h0IGFzIHdlbGwuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludCgKLSAgICAgICAgICAgICcnJ3N0cnVjdCBGb28gewotICAgICAgICAgICAgICAgICBG
b28oaW50IGYpOwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnU2luZ2xlLWFy
Z3VtZW50IGNvbnN0cnVjdG9ycyBzaG91bGQgYmUgbWFya2VkIGV4cGxpY2l0LicKLSAgICAgICAg
ICAgICcgIFtydW50aW1lL2V4cGxpY2l0XSBbNV0nKQotICAgICAgICAjIFRlbXBsYXRpemVkIGNs
YXNzZXMgYXJlIGNhdWdodCBhcyB3ZWxsLgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCi0gICAgICAgICAgICAnJyd0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBGb28gewot
ICAgICAgICAgICAgICAgICBGb28oaW50IGYpOwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAg
ICAgICAgICAnU2luZ2xlLWFyZ3VtZW50IGNvbnN0cnVjdG9ycyBzaG91bGQgYmUgbWFya2VkIGV4
cGxpY2l0LicKLSAgICAgICAgICAgICcgIFtydW50aW1lL2V4cGxpY2l0XSBbNV0nKQotICAgICAg
ICAjIHByb3BlciBzdHlsZSBpcyBva2F5Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKLSAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAgIGV4cGxp
Y2l0IEZvbyhpbnQgZik7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICcnKQot
ICAgICAgICAjIHR3byBhcmd1bWVudCBjb25zdHJ1Y3RvciBpcyBva2F5Ci0gICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAg
ICAgICAgICAgICAgIEZvbyhpbnQgZiwgaW50IGIpOwotICAgICAgICAgICAgICAgfTsnJycsCi0g
ICAgICAgICAgICAnJykKLSAgICAgICAgIyB0d28gYXJndW1lbnQgY29uc3RydWN0b3IsIGFjcm9z
cyB0d28gbGluZXMsIGlzIG9rYXkKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgRm9vKGludCBm
LAotICAgICAgICAgICAgICAgICAgICAgaW50IGIpOwotICAgICAgICAgICAgICAgfTsnJycsCi0g
ICAgICAgICAgICAnJykKLSAgICAgICAgIyBub24tY29uc3RydWN0b3IgKGJ1dCBzaW1pbGFyIG5h
bWUpLCBpcyBva2F5Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAg
ICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAgIGFGb28oaW50IGYpOwotICAg
ICAgICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgIyBjb25zdHJ1Y3Rv
ciB3aXRoIHZvaWQgYXJndW1lbnQgaXMgb2theQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28gewotICAgICAgICAgICAgICAgICBG
b28odm9pZCk7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICcnKQotICAgICAg
ICAjIHNpbmdsZSBhcmd1bWVudCBtZXRob2QgaXMgb2theQotICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28gewotICAgICAgICAgICAg
ICAgICBCYXIoaW50IGIpOwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnJykK
LSAgICAgICAgIyBjb21tZW50cyBzaG91bGQgYmUgaWdub3JlZAotICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28gewotICAgICAgICAg
ICAgICAgLy8gRm9vKGludCBmKTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAg
JycpCi0gICAgICAgICMgc2luZ2xlIGFyZ3VtZW50IGZ1bmN0aW9uIGZvbGxvd2luZyBjbGFzcyBk
ZWZpbml0aW9uIGlzIG9rYXkKLSAgICAgICAgIyAob2theSwgaXQncyBub3QgYWN0dWFsbHkgdmFs
aWQsIGJ1dCB3ZSBkb24ndCB3YW50IGEgZmFsc2UgcG9zaXRpdmUpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAg
ICAgICAgICAgIEZvbyhpbnQgZiwgaW50IGIpOwotICAgICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgICAgIEZvbyhpbnQgZik7JycnLAotICAgICAgICAgICAgJycpCi0gICAgICAgICMgc2luZ2xl
IGFyZ3VtZW50IGZ1bmN0aW9uIGlzIG9rYXkKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KAotICAgICAgICAgICAgJycnc3RhdGljIEZvbyhpbnQgZik7JycnLAotICAgICAgICAg
ICAgJycpCi0gICAgICAgICMgc2luZ2xlIGFyZ3VtZW50IGNvcHkgY29uc3RydWN0b3IgaXMgb2th
eS4KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycn
Y2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgRm9vKGNvbnN0IEZvbyYpOwotICAgICAgICAg
ICAgICAgfTsnJycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAg
Rm9vKEZvbyYpOwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnJykKLQotICAg
IGRlZiB0ZXN0X3NsYXNoX3N0YXJfY29tbWVudF9vbl9zaW5nbGVfbGluZShzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnLyogc3RhdGlj
ICovIEZvbyhpbnQgZik7JycnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJy8qLyBzdGF0aWMgKi8gIEZvbyhpbnQg
Zik7JycnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKLSAgICAgICAgICAgICcnJy8qLyBzdGF0aWMgRm9vKGludCBmKTsnJycsCi0gICAgICAg
ICAgICAnQ291bGQgbm90IGZpbmQgZW5kIG9mIG11bHRpLWxpbmUgY29tbWVudCcKLSAgICAgICAg
ICAgICcgIFtyZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudF0gWzVdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnICAgIC8qLyBzdGF0aWMg
Rm9vKGludCBmKTsnJycsCi0gICAgICAgICAgICAnQ291bGQgbm90IGZpbmQgZW5kIG9mIG11bHRp
LWxpbmUgY29tbWVudCcKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29t
bWVudF0gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAg
ICAgICAgJycnICAgIC8qKi8gc3RhdGljIEZvbyhpbnQgZik7JycnLAotICAgICAgICAgICAgJycp
Ci0KLSAgICAjIFRlc3Qgc3VzcGljaW91cyB1c2FnZSBvZiAiaWYiIGxpa2UgdGhpczoKLSAgICAj
IGlmIChhID09IGIpIHsKLSAgICAjICAgRG9Tb21ldGhpbmcoKTsKLSAgICAjIH0gaWYgKGEgPT0g
YykgeyAgIC8vIFNob3VsZCBiZSAiZWxzZSBpZiIuCi0gICAgIyAgIERvU29tZXRoaW5nKCk7ICAv
LyBUaGlzIGdldHMgY2FsbGVkIHR3aWNlIGlmIGEgPT0gYiAmJiBhID09IGMuCi0gICAgIyB9Ci0g
ICAgZGVmIHRlc3Rfc3VzcGljaW91c191c2FnZV9vZl9pZihzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKLSAgICAgICAgICAgICcgICAgaWYgKGEgPT0gYikgeycsCi0gICAgICAgICAg
ICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICcgICAgfSBpZiAo
YSA9PSBiKSB7JywKLSAgICAgICAgICAgICdEaWQgeW91IG1lYW4gImVsc2UgaWYiPyBJZiBub3Qs
IHN0YXJ0IGEgbmV3IGxpbmUgZm9yICJpZiIuJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5
L2JyYWNlc10gWzRdJykKLQotICAgICMgVGVzdCBzdXNwaWNpb3VzIHVzYWdlIG9mIG1lbXNldC4g
U3BlY2lmaWNhbGx5LCBhIDAKLSAgICAjIGFzIHRoZSBmaW5hbCBhcmd1bWVudCBpcyBhbG1vc3Qg
Y2VydGFpbmx5IGFuIGVycm9yLgotICAgIGRlZiB0ZXN0X3N1c3BpY2lvdXNfdXNhZ2Vfb2ZfbWVt
c2V0KHNlbGYpOgotICAgICAgICAjIE5vcm1hbCB1c2UgaXMgb2theS4KLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKLSAgICAgICAgICAgICcgICAgbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKGJ1Zikp
JywKLSAgICAgICAgICAgICcnKQotCi0gICAgICAgICMgQSAwIGFzIHRoZSBmaW5hbCBhcmd1bWVu
dCBpcyBhbG1vc3QgY2VydGFpbmx5IGFuIGVycm9yLgotICAgICAgICBzZWxmLmFzc2VydF9saW50
KAotICAgICAgICAgICAgJyAgICBtZW1zZXQoYnVmLCBzaXplb2YoYnVmKSwgMCknLAotICAgICAg
ICAgICAgJ0RpZCB5b3UgbWVhbiAibWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpIj8nCi0gICAg
ICAgICAgICAnICBbcnVudGltZS9tZW1zZXRdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoCi0gICAgICAgICAgICAnICAgIG1lbXNldChidWYsIHhzaXplICogeXNpemUsIDApJywKLSAg
ICAgICAgICAgICdEaWQgeW91IG1lYW4gIm1lbXNldChidWYsIDAsIHhzaXplICogeXNpemUpIj8n
Ci0gICAgICAgICAgICAnICBbcnVudGltZS9tZW1zZXRdIFs0XScpCi0KLSAgICAgICAgIyBUaGVy
ZSBpcyBsZWdpdGltYXRlIHRlc3QgY29kZSB0aGF0IHVzZXMgdGhpcyBmb3JtLgotICAgICAgICAj
IFRoaXMgaXMgb2theSBzaW5jZSB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEgbGl0ZXJhbC4KLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICIgICAgbWVtc2V0KGJ1ZiwgJ3kn
LCAwKSIsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAg
ICAgICAgICcgICAgbWVtc2V0KGJ1ZiwgNCwgMCknLAotICAgICAgICAgICAgJycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnICAgIG1lbXNldChidWYsIC0xLCAwKScs
Ci0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAg
ICcgICAgbWVtc2V0KGJ1ZiwgMHhGMSwgMCknLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnICAgIG1lbXNldChidWYsIDB4Y2QsIDApJywK
LSAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRlc3RfY2hlY2tfcG9zaXhfdGhyZWFkaW5nKHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzY3RpbWVfcigpJywgJycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cnRva19yKCknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnICAgIHN0cnRva19yKGZvbywgYmEsIHIpJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ2JyYW5kKCknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnX3JhbmQoKScs
ICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcucmFuZCgpJywgJycpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJz5yYW5kKCknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
cmFuZCgpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgcmFuZF9y
KC4uLikgaW5zdGVhZCBvZiByYW5kKC4uLiknCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyBm
b3IgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eS4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAg
W3J1bnRpbWUvdGhyZWFkc2FmZV9mbl0gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
c3RydG9rKCknLAotICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBzdHJ0
b2tfciguLi4pICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnaW5zdGVhZCBvZiBzdHJ0b2so
Li4uKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnIGZvciBpbXByb3ZlZCB0aHJlYWQgc2Fm
ZXR5LicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcnVudGltZS90aHJlYWRzYWZlX2Zu
XSBbMl0nKQotCi0gICAgIyBUZXN0IHBvdGVudGlhbCBmb3JtYXQgc3RyaW5nIGJ1Z3MgbGlrZSBw
cmludGYoZm9vKS4KLSAgICBkZWYgdGVzdF9mb3JtYXRfc3RyaW5ncyhzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgncHJpbnRmKCJmb28iKScsICcnKQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdwcmludGYoImZvbzogJXMiLCBmb28pJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ0RvY2lkRm9yUHJpbnRmKGRvY2lkKScsICcnKSAgIyBTaG91bGQgbm90IHRyaWdnZXIu
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAncHJpbnRmKGZvbyknLAot
ICAgICAgICAgICAgJ1BvdGVudGlhbCBmb3JtYXQgc3RyaW5nIGJ1Zy4gRG8gcHJpbnRmKCIlcyIs
IGZvbykgaW5zdGVhZC4nCi0gICAgICAgICAgICAnICBbcnVudGltZS9wcmludGZdIFs0XScpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAncHJpbnRmKGZvby5jX3N0cigp
KScsCi0gICAgICAgICAgICAnUG90ZW50aWFsIGZvcm1hdCBzdHJpbmcgYnVnLiAnCi0gICAgICAg
ICAgICAnRG8gcHJpbnRmKCIlcyIsIGZvby5jX3N0cigpKSBpbnN0ZWFkLicKLSAgICAgICAgICAg
ICcgIFtydW50aW1lL3ByaW50Zl0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAg
ICAgICAgICAgICdwcmludGYoZm9vLT5jX3N0cigpKScsCi0gICAgICAgICAgICAnUG90ZW50aWFs
IGZvcm1hdCBzdHJpbmcgYnVnLiAnCi0gICAgICAgICAgICAnRG8gcHJpbnRmKCIlcyIsIGZvby0+
Y19zdHIoKSkgaW5zdGVhZC4nCi0gICAgICAgICAgICAnICBbcnVudGltZS9wcmludGZdIFs0XScp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnU3RyaW5nUHJpbnRmKGZv
byknLAotICAgICAgICAgICAgJ1BvdGVudGlhbCBmb3JtYXQgc3RyaW5nIGJ1Zy4gRG8gU3RyaW5n
UHJpbnRmKCIlcyIsIGZvbykgaW5zdGVhZC4nCi0gICAgICAgICAgICAnJwotICAgICAgICAgICAg
JyAgW3J1bnRpbWUvcHJpbnRmXSBbNF0nKQotCi0gICAgIyBWYXJpYWJsZS1sZW5ndGggYXJyYXlz
IGFyZSBub3QgcGVybWl0dGVkLgotICAgIGRlZiB0ZXN0X3ZhcmlhYmxlX2xlbmd0aF9hcnJheV9k
ZXRlY3Rpb24oc2VsZik6Ci0gICAgICAgIGVycm1zZyA9ICgnRG8gbm90IHVzZSB2YXJpYWJsZS1s
ZW5ndGggYXJyYXlzLiAgVXNlIGFuIGFwcHJvcHJpYXRlbHkgbmFtZWQgJwotICAgICAgICAgICAg
ICAgICAgIignaycgZm9sbG93ZWQgYnkgQ2FtZWxDYXNlKSBjb21waWxlLXRpbWUgY29uc3RhbnQg
Zm9yIHRoZSBzaXplLiIKLSAgICAgICAgICAgICAgICAgICcgIFtydW50aW1lL2FycmF5c10gWzFd
JykKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVthbnlfb2xkX3ZhcmlhYmxlXTsn
LCBlcnJtc2cpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBkb3VibGVzaXplW3NvbWVf
dmFyICogMl07JywgZXJybXNnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVthZnVu
Y3Rpb24oKV07JywgZXJybXNnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVtmdW5j
dGlvbihrTWF4Rm9vQmFycyldOycsIGVycm1zZykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
Ym9vbCBhTGlzdFtpdGVtc18tPnNpemUoKV07JywgZXJybXNnKQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCduYW1lc3BhY2U6OlR5cGUgYnVmZmVyW2xlbisxXTsnLCBlcnJtc2cpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbNjRdOycsICcnKQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdpbnQgYVsweEZGXTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50
IGZpcnN0WzI1Nl0sIHNlY29uZFsyNTZdOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdpbnQgYXJyYXlOYW1lW2tDb21waWxlVGltZUNvbnN0YW50XTsnLCAnJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnY2hhciBidWZbc29tZW5hbWVzcGFjZTo6a0J1ZlNpemVdOycsICcnKQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYXJyYXlOYW1lW0FMTF9DQVBTXTsnLCAnJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQUNsYXNzIGFycmF5MVtmb286OmJhcjo6QUxMX0NB
UFNdOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVtrTWF4U3RyTGVuICsg
MV07JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhW3NpemVvZihmb28pXTsn
LCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbc2l6ZW9mKCpmb28pXTsnLCAn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbc2l6ZW9mIGZvb107JywgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhW3NpemVvZihzdHJ1Y3QgRm9vKV07JywgJycp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhWzEyOCAtIHNpemVvZihjb25zdCBiYXIp
XTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbKHNpemVvZihmb28pICog
NCldOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVsoYXJyYXlzaXplKGZp
eGVkX3NpemVfYXJyYXkpLzIpIDw8IDFdOycsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgLyAgW3do
aXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdkZWxl
dGUgYVtzb21lX3Zhcl07JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3JldHVybiBh
W3NvbWVfdmFyXTsnLCAnJykKLQotICAgICMgQnJhY2UgdXNhZ2UKLSAgICBkZWYgdGVzdF9icmFj
ZXMoc2VsZik6Ci0gICAgICAgICMgQnJhY2VzIHNob3VsZG4ndCBiZSBmb2xsb3dlZCBieSBhIDsg
dW5sZXNzIHRoZXkncmUgZGVmaW5pbmcgYSBzdHJ1Y3QKLSAgICAgICAgIyBvciBpbml0aWFsaXpp
bmcgYW4gYXJyYXkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbM10gPSB7IDEsIDIs
IDMgfTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICcnJ2Nv
bnN0IGludCBmb29bXSA9Ci0gICAgICAgICAgICAgICAgICAgezEsIDIsIDMgfTsnJycsCi0gICAg
ICAgICAgICAnJykKLSAgICAgICAgIyBGb3Igc2luZ2xlIGxpbmUsIHVubWF0Y2hlZCAnfScgd2l0
aCBhICc7JyBpcyBpZ25vcmVkIChub3QgZW5vdWdoIGNvbnRleHQpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2ludCBhWzNdID0geyAxLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
MyB9OycnJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCi0gICAgICAgICAgICAnJydpbnQgYVsyXVszXSA9IHsgeyAxLCAyIH0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsgMywgNCB9IH07JycnLAotICAgICAgICAgICAgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2ludCBh
WzJdWzNdID0KLSAgICAgICAgICAgICAgICAgICB7IHsgMSwgMiB9LAotICAgICAgICAgICAgICAg
ICAgICAgeyAzLCA0IH0gfTsnJycsCi0gICAgICAgICAgICAnJykKLQotICAgICMgQ0hFQ0svRVhQ
RUNUX1RSVUUvRVhQRUNUX0ZBTFNFIHJlcGxhY2VtZW50cwotICAgIGRlZiB0ZXN0X2NoZWNrX2No
ZWNrKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdDSEVDSyh4ID09IDQyKScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIENIRUNLX0VRIGluc3RlYWQg
b2YgQ0hFQ0soYSA9PSBiKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxp
dHkvY2hlY2tdIFsyXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0NIRUNLKHggIT0gNDIp
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgQ0hFQ0tfTkUgaW5z
dGVhZCBvZiBDSEVDSyhhICE9IGIpJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFk
YWJpbGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soeCA+
PSA0MiknLAotICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBDSEVDS19H
RSBpbnN0ZWFkIG9mIENIRUNLKGEgPj0gYiknCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAg
W3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdDSEVD
Syh4ID4gNDIpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgQ0hF
Q0tfR1QgaW5zdGVhZCBvZiBDSEVDSyhhID4gYiknCi0gICAgICAgICAgICAgICAgICAgICAgICAg
JyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdD
SEVDSyh4IDw9IDQyKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5n
IENIRUNLX0xFIGluc3RlYWQgb2YgQ0hFQ0soYSA8PSBiKScKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ0NIRUNLKHggPCA0MiknLAotICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1
c2luZyBDSEVDS19MVCBpbnN0ZWFkIG9mIENIRUNLKGEgPCBiKScKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnRENIRUNLKHggPT0gNDIpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnQ29u
c2lkZXIgdXNpbmcgRENIRUNLX0VRIGluc3RlYWQgb2YgRENIRUNLKGEgPT0gYiknCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdEQ0hFQ0soeCAhPSA0MiknLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICdDb25zaWRlciB1c2luZyBEQ0hFQ0tfTkUgaW5zdGVhZCBvZiBEQ0hFQ0soYSAhPSBiKScK
LSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0RDSEVDSyh4ID49IDQyKScsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIERDSEVDS19HRSBpbnN0ZWFkIG9mIERDSEVDSyhh
ID49IGIpJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10g
WzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRENIRUNLKHggPiA0MiknLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBEQ0hFQ0tfR1QgaW5zdGVhZCBvZiBE
Q0hFQ0soYSA+IGIpJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9j
aGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRENIRUNLKHggPD0gNDIpJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRENIRUNLX0xFIGluc3Rl
YWQgb2YgRENIRUNLKGEgPD0gYiknCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3JlYWRh
YmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdEQ0hFQ0soeCA8
IDQyKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIERDSEVDS19M
VCBpbnN0ZWFkIG9mIERDSEVDSyhhIDwgYiknCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAg
W3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0g
ICAgICAgICAgICAnRVhQRUNUX1RSVUUoIjQyIiA9PSB4KScsCi0gICAgICAgICAgICAnQ29uc2lk
ZXIgdXNpbmcgRVhQRUNUX0VRIGluc3RlYWQgb2YgRVhQRUNUX1RSVUUoYSA9PSBiKScKLSAgICAg
ICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgKLSAgICAgICAgICAgICdFWFBFQ1RfVFJVRSgiNDIiICE9IHgpJywKLSAgICAgICAgICAg
ICdDb25zaWRlciB1c2luZyBFWFBFQ1RfTkUgaW5zdGVhZCBvZiBFWFBFQ1RfVFJVRShhICE9IGIp
JwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KAotICAgICAgICAgICAgJ0VYUEVDVF9UUlVFKCs0MiA+PSB4KScsCi0gICAg
ICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNUX0dFIGluc3RlYWQgb2YgRVhQRUNUX1RSVUUo
YSA+PSBiKScKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdFWFBFQ1RfVFJVRV9NKC00MiA+IHgp
JywKLSAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfR1RfTSBpbnN0ZWFkIG9mIEVY
UEVDVF9UUlVFX00oYSA+IGIpJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBb
Ml0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ0VYUEVDVF9UUlVF
X00oNDJVIDw9IHgpJywKLSAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfTEVfTSBp
bnN0ZWFkIG9mIEVYUEVDVF9UUlVFX00oYSA8PSBiKScKLSAgICAgICAgICAgICcgIFtyZWFkYWJp
bGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAg
ICdFWFBFQ1RfVFJVRV9NKDQyTCA8IHgpJywKLSAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBF
WFBFQ1RfTFRfTSBpbnN0ZWFkIG9mIEVYUEVDVF9UUlVFX00oYSA8IGIpJwotICAgICAgICAgICAg
JyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
Ci0gICAgICAgICAgICAnRVhQRUNUX0ZBTFNFKHggPT0gNDIpJywKLSAgICAgICAgICAgICdDb25z
aWRlciB1c2luZyBFWFBFQ1RfTkUgaW5zdGVhZCBvZiBFWFBFQ1RfRkFMU0UoYSA9PSBiKScKLSAg
ICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgKLSAgICAgICAgICAgICdFWFBFQ1RfRkFMU0UoeCAhPSA0MiknLAotICAgICAgICAg
ICAgJ0NvbnNpZGVyIHVzaW5nIEVYUEVDVF9FUSBpbnN0ZWFkIG9mIEVYUEVDVF9GQUxTRShhICE9
IGIpJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ0VYUEVDVF9GQUxTRSh4ID49IDQyKScsCi0g
ICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNUX0xUIGluc3RlYWQgb2YgRVhQRUNUX0ZB
TFNFKGEgPj0gYiknCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnQVNTRVJUX0ZBTFNFKHggPiA0
MiknLAotICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEFTU0VSVF9MRSBpbnN0ZWFkIG9mIEFT
U0VSVF9GQUxTRShhID4gYiknCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsy
XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnQVNTRVJUX0ZBTFNF
KHggPD0gNDIpJywKLSAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBBU1NFUlRfR1QgaW5zdGVh
ZCBvZiBBU1NFUlRfRkFMU0UoYSA8PSBiKScKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9j
aGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdBU1NF
UlRfRkFMU0VfTSh4IDwgNDIpJywKLSAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBBU1NFUlRf
R0VfTSBpbnN0ZWFkIG9mIEFTU0VSVF9GQUxTRV9NKGEgPCBiKScKLSAgICAgICAgICAgICcgIFty
ZWFkYWJpbGl0eS9jaGVja10gWzJdJykKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdDSEVD
Syhzb21lX2l0ZXJhdG9yID09IG9iai5lbmQoKSknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnRVhQRUNUX1RSVUUoc29tZV9pdGVyYXRvciA9PSBvYmouZW5kKCkpJywgJycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0VYUEVDVF9GQUxTRShzb21lX2l0ZXJhdG9yID09IG9iai5l
bmQoKSknLCAnJykKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdDSEVDSyhDcmVhdGVUZXN0
RmlsZShkaXIsICgxIDw8IDIwKSkpOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdD
SEVDSyhDcmVhdGVUZXN0RmlsZShkaXIsICgxID4+IDIwKSkpOycsICcnKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ0NIRUNLKHg8NDIpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBb
J01pc3Npbmcgc3BhY2VzIGFyb3VuZCA8JwotICAgICAgICAgICAgICAgICAgICAgICAgICAnICBb
d2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdD
b25zaWRlciB1c2luZyBDSEVDS19MVCBpbnN0ZWFkIG9mIENIRUNLKGEgPCBiKScKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nXSkKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soeD40MiknLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICdDb25zaWRlciB1c2luZyBDSEVDS19HVCBpbnN0ZWFkIG9mIENIRUNLKGEgPiBiKScKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICcgICAgRVhQRUNUX1RSVUUoNDIgPCB4
KSAvLyBSYW5kb20gY29tbWVudC4nLAotICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEVYUEVD
VF9MVCBpbnN0ZWFkIG9mIEVYUEVDVF9UUlVFKGEgPCBiKScKLSAgICAgICAgICAgICcgIFtyZWFk
YWJpbGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAg
ICAgICdFWFBFQ1RfVFJVRSggNDIgPCB4ICknLAotICAgICAgICAgICAgWydFeHRyYSBzcGFjZSBh
ZnRlciAoIGluIGZ1bmN0aW9uIGNhbGwnCi0gICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFy
ZW5zXSBbNF0nLAotICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfTFQgaW5zdGVh
ZCBvZiBFWFBFQ1RfVFJVRShhIDwgYiknCi0gICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2No
ZWNrXSBbMl0nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdDSEVD
SygiZm9vIiA9PSAiZm9vIiknLAotICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIENIRUNLX0VR
IGluc3RlYWQgb2YgQ0hFQ0soYSA9PSBiKScKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9j
aGVja10gWzJdJykKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdDSEVDS19FUSgiZm9vIiwg
ImZvbyIpJywgJycpCi0KLSAgICBkZWYgdGVzdF9icmFjZV9hdF9iZWdpbl9vZl9saW5lKHNlbGYp
OgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd7JywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5lJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJyNlbmRpZlxuJwot
ICAgICAgICAgICAgJ3tcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAoY29u
ZGl0aW9uKSB7JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnQoCi0gICAgICAgICAgICAnICAgIE1BQ1JPMShtYWNyb0FyZykgeycsCi0gICAgICAg
ICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAg
ICAgJ0FDQ0VTU09SX0dFVFRFUihNZXNzYWdlRXZlbnRQb3J0cykgeycsCi0gICAgICAgICAgICAn
UGxhY2UgYnJhY2Ugb24gaXRzIG93biBsaW5lIGZvciBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFt3
aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50KAotICAgICAgICAgICAgJ2ludCBmb28oKSB7JywKLSAgICAgICAgICAgICdQbGFjZSBicmFj
ZSBvbiBpdHMgb3duIGxpbmUgZm9yIGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgW3doaXRlc3BhY2Uv
YnJhY2VzXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAg
ICAgICAgICAnaW50IGZvbygpIGNvbnN0IHsnLAotICAgICAgICAgICAgJ1BsYWNlIGJyYWNlIG9u
IGl0cyBvd24gbGluZSBmb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBbd2hpdGVzcGFjZS9icmFj
ZXNdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAg
ICAgICdpbnQgZm9vKCkgY29uc3RcbicKLSAgICAgICAgICAgICd7XG4nCi0gICAgICAgICAgICAn
fVxuJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xp
bnQoCi0gICAgICAgICAgICAnaWYgKGNvbmRpdGlvblxuJwotICAgICAgICAgICAgJyAgICAmJiBj
b25kaXRpb24yXG4nCi0gICAgICAgICAgICAnICAgICYmIGNvbmRpdGlvbjMpIHtcbicKLSAgICAg
ICAgICAgICd9XG4nLAotICAgICAgICAgICAgJycpCi0KLSAgICBkZWYgdGVzdF9taXNtYXRjaGlu
Z19zcGFjZXNfaW5fcGFyZW5zKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAo
Zm9vICkgeycsICdNaXNtYXRjaGluZyBzcGFjZXMgaW5zaWRlICgpIGluIGlmJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzVdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnc3dpdGNoICggZm9vKSB7JywgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNp
ZGUgKCkgaW4gc3dpdGNoJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNl
L3BhcmVuc10gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChmb287IGJhOyBi
YXIgKSB7JywgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkgaW4gZm9yJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzVdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnZm9yICgoZm9vKTsgKGJhKTsgKGJhcikgKSB7JywgJ01pc21hdGNoaW5n
IHNwYWNlcyBpbnNpZGUgKCkgaW4gZm9yJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3
aGl0ZXNwYWNlL3BhcmVuc10gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICg7
IGZvbzsgYmFyKSB7JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoOyAoZm9v
KTsgKGJhcikpIHsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICggOyBmb287
IGJhcikgeycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKCA7IChmb28pOyAo
YmFyKSkgeycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKCA7IGZvbzsgYmFy
ICkgeycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKCA7IChmb28pOyAoYmFy
KSApIHsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChmb287IGJhcjsgKSB7
JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoKGZvbyk7IChiYXIpOyApIHsn
LCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yZWFjaCAoZm9vLCBmb29zICkgeycs
ICdNaXNtYXRjaGluZyBzcGFjZXMgaW5zaWRlICgpIGluIGZvcmVhY2gnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNV0nKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdmb3JlYWNoICggZm9vLCBmb29zKSB7JywgJ01pc21hdGNoaW5nIHNwYWNlcyBp
bnNpZGUgKCkgaW4gZm9yZWFjaCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVz
cGFjZS9wYXJlbnNdIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3doaWxlICggIGZv
byAgKSB7JywgJ1Nob3VsZCBoYXZlIHplcm8gb3Igb25lIHNwYWNlcyBpbnNpZGUnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgJyAoIGFuZCApIGluIHdoaWxlICBbd2hpdGVzcGFjZS9wYXJlbnNd
IFs1XScpCi0KLSAgICBkZWYgdGVzdF9zcGFjaW5nX2Zvcl9mbmNhbGwoc2VsZik6Ci0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb28pIHsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnZm9yIChmb287YmFyO2JheikgeycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdmb3JlYWNoIChmb28sIGZvb3MpIHsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
d2hpbGUgKGZvbykgeycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzd2l0Y2ggKGZv
bykgeycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCduZXcgKFJlbmRlckFyZW5hKCkp
IFJlbmRlcklubGluZShkb2N1bWVudCgpKScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdmb28oIGJhciknLCAnRXh0cmEgc3BhY2UgYWZ0ZXIgKCBpbiBmdW5jdGlvbiBjYWxsJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzRdJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnZm9vYmFyKCBcXCcsICcnKQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdmb29iYXIoICAgICBcXCcsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCco
IGEgKyBiKScsICdFeHRyYSBzcGFjZSBhZnRlciAoJwotICAgICAgICAgICAgICAgICAgICAgICAg
ICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
KChhK2IpKScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb28gKGZvbyknLCAnRXh0
cmEgc3BhY2UgYmVmb3JlICggaW4gZnVuY3Rpb24gY2FsbCcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAnICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3R5cGVkZWYgZm9vICgqZm9vKShmb28pJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3R5cGVkZWYgZm9vICgqZm9vMTJiYXJfKShmb28pJywgJycpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ3R5cGVkZWYgZm9vIChGb286OipiYXIpKGZvbyknLCAnJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnZm9vIChGb286OipiYXIpKCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSAoIGluIGZ1bmN0aW9uIGNhbGwnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNF0nKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCd0eXBlZGVmIGZvbyAoRm9vOjoqYmFyKSgnLCAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnKGZvbykoYmFyKScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdG
b28gKCpmb28pKGJhciknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRm9vICgqZm9v
KShCYXIgYmFyLCcsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjaGFyICgqcClbc2l6
ZW9mKGZvbyldID0gJmZvbycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjaGFyICgm
cmVmKVtzaXplb2YoZm9vKV0gPSAmZm9vJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J2NvbnN0IGNoYXIzMiAoKnRhYmxlW10pWzZdOycsICcnKQotCi0gICAgZGVmIHRlc3Rfc3BhY2lu
Z19iZWZvcmVfYnJhY2VzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAoZm9v
KXsnLCAnTWlzc2luZyBzcGFjZSBiZWZvcmUgeycKLSAgICAgICAgICAgICAgICAgICAgICAgICAn
ICBbd2hpdGVzcGFjZS9icmFjZXNdIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2Zv
cnsnLCAnTWlzc2luZyBzcGFjZSBiZWZvcmUgeycKLSAgICAgICAgICAgICAgICAgICAgICAgICAn
ICBbd2hpdGVzcGFjZS9icmFjZXNdIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2Zv
ciB7JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0VYUEVDVF9ERUJVR19ERUFUSCh7
JywgJycpCi0KLSAgICBkZWYgdGVzdF9zcGFjaW5nX2Fyb3VuZF9lbHNlKHNlbGYpOgotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCd9ZWxzZSB7JywgJ01pc3Npbmcgc3BhY2UgYmVmb3JlIGVsc2Un
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNV0nKQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCd9IGVsc2V7JywgJ01pc3Npbmcgc3BhY2UgYmVmb3Jl
IHsnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNV0n
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd9IGVsc2UgeycsICcnKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCd9IGVsc2UgaWYnLCAnJykKLQotICAgIGRlZiB0ZXN0X3NwYWNpbmdfZm9y
X2JpbmFyeV9vcHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb288PWJh
cikgeycsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPD0nCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdpZiAoZm9vPGJhcikgeycsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPCcKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb288YmFyLT5iYXopIHsnLCAnTWlzc2luZyBzcGFjZXMg
YXJvdW5kIDwnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0
b3JzXSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAoZm9vPGJhci0+YmFyKSB7
JywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA8JwotICAgICAgICAgICAgICAgICAgICAgICAgICcg
IFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
dHlwZWRlZiBoYXNoX21hcDxGb28sIEJhcicsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPCcKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5cGVkZWYgaGFzaF9tYXA8Rm9vb29vVHlwZSwgQmFh
YWFhclR5cGUsJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vPiB0Kz1iOycs
ICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgKz0nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAg
W3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdh
PEZvbz4gdC09YjsnLCAnTWlzc2luZyBzcGFjZXMgYXJvdW5kIC09JwotICAgICAgICAgICAgICAg
ICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnYTxGb28qPiB0Kj1iOycsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgKj0nCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhPEZvbyo+IHQvPWI7JywgJ01pc3Npbmcgc3BhY2Vz
IGFyb3VuZCAvPScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9vcGVy
YXRvcnNdIFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdHw9YjsnLCAn
TWlzc2luZyBzcGFjZXMgYXJvdW5kIHw9JwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3
aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxG
b28qPiB0Jj1iOycsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgJj0nCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdhPEZvbyo+IHQ8PD1iOycsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPDw9Jwot
ICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28qPiB0Pj49YjsnLCAnTWlzc2luZyBzcGFj
ZXMgYXJvdW5kID4+PScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9v
cGVyYXRvcnNdIFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdD4+PSZi
fGM7JywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA+Pj0nCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdhPEZvbyo+IHQ8PD0qYi9jOycsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPDw9JwotICAg
ICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28+IHQgLT0gYjsnLCAnJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnYTxGb28+IHQgKz0gYjsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnYTxGb28qPiB0ICo9IGI7JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8
Rm9vKj4gdCAvPSBiOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhPEZvbyo+IHQg
fD0gYjsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28qPiB0ICY9IGI7Jywg
JycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdCA8PD0gYjsnLCAnJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28qPiB0ID4+PSBiOycsICcnKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdhPEZvbyo+IHQgPj49ICZifGM7JywgJ01pc3Npbmcgc3BhY2VzIGFy
b3VuZCB8JwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL29wZXJhdG9y
c10gWzNdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28qPiB0IDw8PSAqYi9jOycs
ICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgLycKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBb
d2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8
Rm9vKj4gdCA8PD0gYi9jOyAvL1Rlc3QnLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1No
b3VsZCBoYXZlIGEgc3BhY2UgYmV0d2VlbiAvLyBhbmQgY29tbWVudCAgJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICdbd2hpdGVzcGFjZS9jb21tZW50c10gWzRdJywgJ01pc3NpbmcnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgJyBzcGFjZXMgYXJvdW5kIC8gIFt3aGl0ZXNwYWNlL29wZXJh
dG9yc10gWzNdJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdCA8PD0gYnx8
YzsgIC8vVGVzdCcsIFsnT25lIHNwYWNlIGJlZm9yZSBlbmQnCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgJyBvZiBsaW5lIGNvbW1lbnRzICBbd2hpdGVzcGFjZS9jb21tZW50c10gWzVdJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnU2hvdWxkIGhhdmUgYSBzcGFjZSBiZXR3ZWVuIC8vIGFu
ZCBjb21tZW50ICAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1t3aGl0ZXNwYWNlL2NvbW1l
bnRzXSBbNF0nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdNaXNzaW5nIHNwYWNlcyBhcm91
bmQgfHwgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ2E8Rm9vKj4gdCA8PD0gYiYmYzsgLy8gVGVzdCcsICdNaXNzaW5nIHNwYWNlcyBhcm91
bmQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAmJiAgW3doaXRlc3BhY2Uvb3BlcmF0b3Jz
XSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhPEZvbyo+IHQgPDw9IGImJiZjOyAv
LyBUZXN0JywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCcKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAnICYmICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ2E8Rm9vKj4gdCA8PD0gYiYmKmM7IC8vIFRlc3QnLCAnTWlzc2luZyBzcGFjZXMgYXJv
dW5kJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgJiYgIFt3aGl0ZXNwYWNlL29wZXJhdG9y
c10gWzNdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYTxGb28qPiB0IDw8PSBiICYmICpj
OyAvLyBUZXN0JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdCA8PD0g
YiAmJiAmYzsgLy8gVGVzdCcsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhPEZvbyo+
IHQgPDw9IGIgfHwgJmM7ICAvKlRlc3QnLCAnQ29tcGxleCBtdWx0aS1saW5lICcKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAnLyouLi4qLy1zdHlsZSBjb21tZW50IGZvdW5kLiBMaW50IG1heSBn
aXZlIGJvZ3VzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnd2FybmluZ3MuICBDb25zaWRl
ciByZXBsYWNpbmcgdGhlc2Ugd2l0aCAvLy1zdHlsZScKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAnIGNvbW1lbnRzLCB3aXRoICNpZiAwLi4uI2VuZGlmLCBvciB3aXRoIG1vcmUgY2xlYXJseScK
LSAgICAgICAgICAgICAgICAgICAgICAgICAnIHN0cnVjdHVyZWQgbXVsdGktbGluZSBjb21tZW50
cy4gIFtyZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudF0gWzVdJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnYTxGb28mPiB0IDw8PSAmYiB8ICZjOycsICcnKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdhPEZvbyo+IHQgPDw9ICZiICYgJmM7IC8vIFRlc3QnLCAnJykKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnYTxGb28qPiB0IDw8PSAqYiAvICZjOyAvLyBUZXN0JywgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChhPWIgPT0gMSknLCAnTWlzc2luZyBzcGFjZXMg
YXJvdW5kID0gIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzRdJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnYSA9IDE8PDIwJywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA8PCAgW3doaXRlc3Bh
Y2Uvb3BlcmF0b3JzXSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAoYSA9IGIg
PT0gMSknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnYSA9IDEgPDwgMjAnLCAnJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KCcjaW5jbHVkZSAiY29uZmlnLmgi
XG4jaW5jbHVkZSA8c3lzL2lvLmg+XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgnI2luY2x1ZGUg
ImNvbmZpZy5oIlxuI2ltcG9ydCA8Zm9vL2Jhci5oPlxuJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRlc3Rfc3BhY2luZ19iZWZvcmVfbGFzdF9z
ZW1pY29sb24oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NhbGxfZnVuY3Rpb24o
KSA7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgYmVmb3JlIGxhc3Qg
c2VtaWNvbG9uLiBJZiB0aGlzIHNob3VsZCBiZSBhbiAnCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJ2VtcHR5IHN0YXRlbWVudCwgdXNlIHsgfSBpbnN0ZWFkLicKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAnICBbd2hpdGVzcGFjZS9zZW1pY29sb25dIFs1XScpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ3doaWxlICh0cnVlKSA7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRXh0
cmEgc3BhY2UgYmVmb3JlIGxhc3Qgc2VtaWNvbG9uLiBJZiB0aGlzIHNob3VsZCBiZSBhbiAnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJ2VtcHR5IHN0YXRlbWVudCwgdXNlIHsgfSBpbnN0ZWFk
LicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9zZW1pY29sb25dIFs1
XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2RlZmF1bHQ6OycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJ1NlbWljb2xvbiBkZWZpbmluZyBlbXB0eSBzdGF0ZW1lbnQuIFVzZSB7IH0g
aW5zdGVhZC4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvc2VtaWNv
bG9uXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICAgICA7JywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAnTGluZSBjb250YWlucyBvbmx5IHNlbWljb2xvbi4gSWYgdGhpcyBz
aG91bGQgYmUgYW4gZW1wdHkgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdzdGF0ZW1lbnQs
IHVzZSB7IH0gaW5zdGVhZC4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3Bh
Y2Uvc2VtaWNvbG9uXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKGludCBp
ID0gMDsgOycsICcnKQotCi0gICAgIyBTdGF0aWMgb3IgZ2xvYmFsIFNUTCBzdHJpbmdzLgotICAg
IGRlZiB0ZXN0X3N0YXRpY19vcl9nbG9iYWxfc3Rsc3RyaW5ncyhzZWxmKToKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnc3RyaW5nIGZvbzsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdG
b3IgYSBzdGF0aWMvZ2xvYmFsIHN0cmluZyBjb25zdGFudCwgdXNlIGEgQyBzdHlsZSAnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZyBpbnN0ZWFkOiAiY2hhciBmb29bXSIuJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICcgIFtydW50aW1lL3N0cmluZ10gWzRdJykKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnc3RyaW5nIGtGb28gPSAiaGVsbG8iOyAvLyBFbmdsaXNoJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnRm9yIGEgc3RhdGljL2dsb2JhbCBzdHJpbmcgY29uc3Rh
bnQsIHVzZSBhIEMgc3R5bGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcgaW5z
dGVhZDogImNoYXIga0Zvb1tdIi4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3J1bnRp
bWUvc3RyaW5nXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzdGF0aWMgc3RyaW5n
IGZvbzsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdGb3IgYSBzdGF0aWMvZ2xvYmFsIHN0
cmluZyBjb25zdGFudCwgdXNlIGEgQyBzdHlsZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
J3N0cmluZyBpbnN0ZWFkOiAic3RhdGljIGNoYXIgZm9vW10iLicKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAnICBbcnVudGltZS9zdHJpbmddIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3N0YXRpYyBjb25zdCBzdHJpbmcgZm9vOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
J0ZvciBhIHN0YXRpYy9nbG9iYWwgc3RyaW5nIGNvbnN0YW50LCB1c2UgYSBDIHN0eWxlICcKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nIGluc3RlYWQ6ICJzdGF0aWMgY29uc3QgY2hh
ciBmb29bXSIuJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtydW50aW1lL3N0cmluZ10g
WzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RyaW5nIEZvbzo6YmFyOycsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgJ0ZvciBhIHN0YXRpYy9nbG9iYWwgc3RyaW5nIGNvbnN0YW50
LCB1c2UgYSBDIHN0eWxlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nIGluc3Rl
YWQ6ICJjaGFyIEZvbzo6YmFyW10iLicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcnVu
dGltZS9zdHJpbmddIFs0XScpCi0gICAgICAgICMgUmFyZSBjYXNlLgotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdzdHJpbmcgZm9vKCJmb29iYXIiKTsnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICdGb3IgYSBzdGF0aWMvZ2xvYmFsIHN0cmluZyBjb25zdGFudCwgdXNlIGEgQyBzdHlsZSAn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZyBpbnN0ZWFkOiAiY2hhciBmb29bXSIu
JwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtydW50aW1lL3N0cmluZ10gWzRdJykKLSAg
ICAgICAgIyBTaG91bGQgbm90IGNhdGNoIGxvY2FsIG9yIG1lbWJlciB2YXJpYWJsZXMuCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgICBzdHJpbmcgZm9vJywgJycpCi0gICAgICAgICMgU2hv
dWxkIG5vdCBjYXRjaCBmdW5jdGlvbnMuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmlu
ZyBFbXB0eVN0cmluZygpIHsgcmV0dXJuICIiOyB9JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ3N0cmluZyBFbXB0eVN0cmluZyAoKSB7IHJldHVybiAiIjsgfScsICcnKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdzdHJpbmcgVmVyeUxvbmdOYW1lRnVuY3Rpb25Tb21ldGltZXNF
bmRzV2l0aChcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIFZlcnlMb25nTmFtZVR5
cGUgdmVyeV9sb25nX25hbWVfdmFyaWFibGUpIHt9JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ3RlbXBsYXRlPD5cbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nIEZ1
bmN0aW9uVGVtcGxhdGVTcGVjaWFsaXphdGlvbjxTb21lVHlwZT4oXG4nCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJyAgICAgIGludCB4KSB7IHJldHVybiAiIjsgfScsICcnKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCd0ZW1wbGF0ZTw+XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAg
J3N0cmluZyBGdW5jdGlvblRlbXBsYXRlU3BlY2lhbGl6YXRpb248dmVjdG9yPEE6OkI+KiA+KFxu
JwotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICBpbnQgeCkgeyByZXR1cm4gIiI7IH0n
LCAnJykKLQotICAgICAgICAjIHNob3VsZCBub3QgY2F0Y2ggbWV0aG9kcyBvZiB0ZW1wbGF0ZSBj
bGFzc2VzLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzdHJpbmcgQ2xhc3M8VHlwZT46Ok1l
dGhvZCgpIGNvbnN0XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3tcbicKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAnICByZXR1cm4gIiI7XG4nCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJ31cbicsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzdHJpbmcgQ2xhc3M8VHlw
ZT46Ok1ldGhvZChcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgaW50IGFyZykgY29u
c3RcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAne1xuJwotICAgICAgICAgICAgICAgICAg
ICAgICAgICcgIHJldHVybiAiIjtcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJywg
JycpCi0KLSAgICBkZWYgdGVzdF9ub19zcGFjZXNfaW5fZnVuY3Rpb25fY2FsbHMoc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1RlbGxTdG9yeSgxLCAzKTsnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdUZWxsU3RvcnkoMSwg
MyApOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSApJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzJdJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnVGVsbFN0b3J5KDEgLyogd29sZiAqLywgMyAvKiBwaWdz
ICovKTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoJyNlbmRpZlxuICAgICk7JywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRlc3RfdHdvX3NwYWNlc19iZXR3ZWVuX2Nv
ZGVfYW5kX2NvbW1lbnRzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd9IC8vIG5h
bWVzcGFjZSBmb28nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCd9Ly8gbmFtZXNwYWNlIGZvbycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJ09uZSBzcGFjZSBiZWZvcmUgZW5kIG9mIGxpbmUgY29tbWVudHMnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvY29tbWVudHNdIFs1XScpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ3ByaW50ZigiZm9vIik7IC8vIE91dHNpZGUgcXVvdGVzLicsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBpID0g
MDsgLy8gSGF2aW5nIG9uZSBzcGFjZSBpcyBmaW5lLicsJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ2ludCBpID0gMDsgIC8vIEhhdmluZyB0d28gc3BhY2VzIGlzIGJhZC4nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICdPbmUgc3BhY2UgYmVmb3JlIGVuZCBvZiBsaW5lIGNvbW1lbnRz
JwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2NvbW1lbnRzXSBbNV0n
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgaSA9IDA7ICAgLy8gSGF2aW5nIHRocmVl
IHNwYWNlcyBpcyBiYWQuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnT25lIHNwYWNlIGJl
Zm9yZSBlbmQgb2YgbGluZSBjb21tZW50cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBb
d2hpdGVzcGFjZS9jb21tZW50c10gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy8g
VG9wIGxldmVsIGNvbW1lbnQnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgIC8v
IExpbmUgc3RhcnRzIHdpdGggZm91ciBzcGFjZXMuJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ2ZvbygpO1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICd7IC8vIEEgc2NvcGUg
aXMgb3BlbmluZy4nLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgIGZvbygpO1xu
JwotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgeyAvLyBBbiBpbmRlbnRlZCBzY29wZSBp
cyBvcGVuaW5nLicsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAoZm9vKSB7IC8v
IG5vdCBhIHB1cmUgc2NvcGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdwcmludGYoIi8vIEluIHF1b3Rlcy4iKScsICcnKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdwcmludGYoIlxcIiVzIC8vIEluIHF1b3Rlcy4iKScsICcnKQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdwcmludGYoIiVzIiwgIi8vIEluIHF1b3Rlcy4iKScs
ICcnKQotCi0gICAgZGVmIHRlc3Rfc3BhY2VfYWZ0ZXJfY29tbWVudF9tYXJrZXIoc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8vJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJy8veCcsICdTaG91bGQgaGF2ZSBhIHNwYWNlIGJldHdlZW4gLy8gYW5kIGNvbW1lbnQnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvY29tbWVudHNdIFs0XScpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8vIHgnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnLy8tLS0tJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8vPT09PScsICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcvLy8vLy8nLCAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnLy8vLy8vIHgnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy8v
IHgnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy8vL3gnLCAnU2hvdWxkIGhhdmUg
YSBzcGFjZSBiZXR3ZWVuIC8vIGFuZCBjb21tZW50JwotICAgICAgICAgICAgICAgICAgICAgICAg
ICcgIFt3aGl0ZXNwYWNlL2NvbW1lbnRzXSBbNF0nKQotCi0gICAgZGVmIHRlc3RfbmV3bGluZV9h
dF9lb2Yoc2VsZik6Ci0gICAgICAgIGRlZiBkb190ZXN0KHNlbGYsIGRhdGEsIGlzX21pc3Npbmdf
ZW9mKToKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYu
YXNzZXJ0XykKLSAgICAgICAgICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jcHAnLCAn
Y3BwJywgZGF0YS5zcGxpdCgnXG4nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICAgICAgIyBUaGUgd2FybmluZyBhcHBlYXJzIG9u
bHkgb25jZS4KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAotICAgICAgICAgICAgICAg
IGludChpc19taXNzaW5nX2VvZiksCi0gICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJl
c3VsdHMoKS5jb3VudCgKLSAgICAgICAgICAgICAgICAgICAgJ0NvdWxkIG5vdCBmaW5kIGEgbmV3
bGluZSBjaGFyYWN0ZXIgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZS4nCi0gICAgICAgICAgICAgICAg
ICAgICcgIFt3aGl0ZXNwYWNlL2VuZGluZ19uZXdsaW5lXSBbNV0nKSkKLQotICAgICAgICBkb190
ZXN0KHNlbGYsICcvLyBOZXdsaW5lXG4vLyBhdCBFT0ZcbicsIEZhbHNlKQotICAgICAgICBkb190
ZXN0KHNlbGYsICcvLyBObyBuZXdsaW5lXG4vLyBhdCBFT0YnLCBUcnVlKQotCi0gICAgZGVmIHRl
c3RfaW52YWxpZF91dGY4KHNlbGYpOgotICAgICAgICBkZWYgZG9fdGVzdChzZWxmLCByYXdfYnl0
ZXMsIGhhc19pbnZhbGlkX3V0ZjgpOgotICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJy
b3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICAgICAgc2VsZi5wcm9jZXNzX2ZpbGVf
ZGF0YSgnZm9vLmNwcCcsICdjcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bmljb2RlKHJhd19ieXRlcywgJ3V0ZjgnLCAncmVwbGFjZScpLnNwbGl0KCdcbicpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAg
ICAgICAjIFRoZSB3YXJuaW5nIGFwcGVhcnMgb25seSBvbmNlLgotICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoCi0gICAgICAgICAgICAgICAgaW50KGhhc19pbnZhbGlkX3V0ZjgpLAotICAg
ICAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkuY291bnQoCi0gICAgICAgICAg
ICAgICAgICAgICdMaW5lIGNvbnRhaW5zIGludmFsaWQgVVRGLTgnCi0gICAgICAgICAgICAgICAg
ICAgICcgKG9yIFVuaWNvZGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyKS4nCi0gICAgICAgICAgICAg
ICAgICAgICcgIFtyZWFkYWJpbGl0eS91dGY4XSBbNV0nKSkKLQotICAgICAgICBkb190ZXN0KHNl
bGYsICdIZWxsbyB3b3JsZFxuJywgRmFsc2UpCi0gICAgICAgIGRvX3Rlc3Qoc2VsZiwgJ1x4ZTlc
eDhlXHhiZFxuJywgRmFsc2UpCi0gICAgICAgIGRvX3Rlc3Qoc2VsZiwgJ1x4ZTl4XHg4ZVx4YmRc
bicsIFRydWUpCi0gICAgICAgICMgVGhpcyBpcyB0aGUgZW5jb2Rpbmcgb2YgdGhlIHJlcGxhY2Vt
ZW50IGNoYXJhY3RlciBpdHNlbGYgKHdoaWNoCi0gICAgICAgICMgeW91IGNhbiBzZWUgYnkgZXZh
bHVhdGluZyBjb2RlY3MuZ2V0ZW5jb2RlcigndXRmOCcpKHUnXHVmZmZkJykpLgotICAgICAgICBk
b190ZXN0KHNlbGYsICdceGVmXHhiZlx4YmRcbicsIFRydWUpCi0KLSAgICBkZWYgdGVzdF9pc19i
bGFua19saW5lKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmlzX2JsYW5r
X2xpbmUoJycpKQotICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmlzX2JsYW5rX2xpbmUo
JyAnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcF9zdHlsZS5pc19ibGFua19saW5lKCcgXHRc
clxuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmlzX2JsYW5rX2xpbmUo
J2ludCBhOycpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IGNwcF9zdHlsZS5pc19ibGFua19s
aW5lKCd7JykpCi0KLSAgICBkZWYgdGVzdF9ibGFua19saW5lc19jaGVjayhzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRfYmxhbmtfbGluZXNfY2hlY2soWyd7XG4nLCAnXG4nLCAnXG4nLCAnfVxu
J10sIDEsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2JsYW5rX2xpbmVzX2NoZWNrKFsnICBpZiAo
Zm9vKSB7XG4nLCAnXG4nLCAnICB9XG4nXSwgMSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRfYmxh
bmtfbGluZXNfY2hlY2soCi0gICAgICAgICAgICBbJ1xuJywgJy8vIHtcbicsICdcbicsICdcbics
ICcvLyBDb21tZW50XG4nLCAne1xuJywgJ31cbiddLCAwLCAwKQotICAgICAgICBzZWxmLmFzc2Vy
dF9ibGFua19saW5lc19jaGVjayhbJ1xuJywgJ3J1bigieyIpO1xuJywgJ1xuJ10sIDAsIDApCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2JsYW5rX2xpbmVzX2NoZWNrKFsnXG4nLCAnICBpZiAoZm9vKSB7
IHJldHVybiAwOyB9XG4nLCAnXG4nXSwgMCwgMCkKLQotICAgIGRlZiB0ZXN0X2FsbG93X2JsYW5r
X2xpbmVfYmVmb3JlX2Nsb3NpbmdfbmFtZXNwYWNlKHNlbGYpOgotICAgICAgICBlcnJvcl9jb2xs
ZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIHNlbGYucHJvY2Vz
c19maWxlX2RhdGEoJ2Zvby5jcHAnLCAnY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbJ25hbWVzcGFjZSB7JywgJycsICd9ICAvLyBuYW1lc3BhY2UnXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKDAsIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkuY291bnQoCi0gICAgICAgICAgICAn
QmxhbmsgbGluZSBhdCB0aGUgZW5kIG9mIGEgY29kZSBibG9jay4gIElzIHRoaXMgbmVlZGVkPycK
LSAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2JsYW5rX2xpbmVdIFszXScpKQotCi0gICAgZGVm
IHRlc3RfYWxsb3dfYmxhbmtfbGluZV9iZWZvcmVfaWZfZWxzZV9jaGFpbihzZWxmKToKLSAgICAg
ICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAg
ICBzZWxmLnByb2Nlc3NfZmlsZV9kYXRhKCdmb28uY3BwJywgJ2NwcCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWydpZiAoaG9nZSkgeycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcnLCAgIyBObyB3YXJuaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICd9IGVsc2UgaWYgKHBpeW8pIHsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnJywgICMgTm8gd2FybmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfSBl
bHNlIGlmIChwaXlvcGl5bykgeycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcg
IGhvZ2UgPSB0cnVlOycsICAjIE5vIHdhcm5pbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ30gZWxzZSB7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsICAj
IFdhcm5pbmcgb24gdGhpcyBsaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9
J10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpLmNvdW50
KAotICAgICAgICAgICAgJ0JsYW5rIGxpbmUgYXQgdGhlIGVuZCBvZiBhIGNvZGUgYmxvY2suICBJ
cyB0aGlzIG5lZWRlZD8nCi0gICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9ibGFua19saW5lXSBb
M10nKSkKLQotICAgIGRlZiB0ZXN0X2Vsc2Vfb25fc2FtZV9saW5lX2FzX2Nsb3NpbmdfYnJhY2Vz
KHNlbGYpOgotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFz
c2VydF8pCi0gICAgICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jcHAnLCAnY3BwJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2lmIChob2dlKSB7JywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICd9JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBlbHNlIHsnICAjIFdh
cm5pbmcgb24gdGhpcyBsaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfSddLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
MSwgZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKS5jb3VudCgKLSAgICAgICAgICAgICdBbiBlbHNl
IHNob3VsZCBhcHBlYXIgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgcHJlY2VkaW5nIH0nCi0gICAg
ICAgICAgICAnICBbd2hpdGVzcGFjZS9uZXdsaW5lXSBbNF0nKSkKLQotICAgIGRlZiB0ZXN0X2Vs
c2VfY2xhdXNlX25vdF9vbl9zYW1lX2xpbmVfYXNfZWxzZShzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnICAgIGVsc2UgRG9Tb21ldGhpbmdFbHNlKCk7JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAnRWxzZSBjbGF1c2Ugc2hvdWxkIG5ldmVyIGJlIG9uIHNhbWUgbGluZSBhcyBl
bHNlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnKHVzZSAyIGxpbmVzKSAgW3doaXRlc3Bh
Y2UvbmV3bGluZV0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgIGVsc2UgaWZE
b1NvbWV0aGluZ0Vsc2UoKTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdFbHNlIGNsYXVz
ZSBzaG91bGQgbmV2ZXIgYmUgb24gc2FtZSBsaW5lIGFzIGVsc2UgJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICcodXNlIDIgbGluZXMpICBbd2hpdGVzcGFjZS9uZXdsaW5lXSBbNF0nKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCcgICAgZWxzZSBpZiAoYmxhaCkgeycsICcnKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCcgICAgdmFyaWFibGVfZW5kc19pbl9lbHNlID0gdHJ1ZTsnLCAn
JykKLQotICAgIGRlZiB0ZXN0X2NvbW1hKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdhID0gZigxLDIpOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ01pc3Npbmcgc3BhY2Ug
YWZ0ZXIgLCAgW3doaXRlc3BhY2UvY29tbWFdIFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2ludCB0bXA9YSxhPWIsYj10bXA7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ01p
c3Npbmcgc3BhY2VzIGFyb3VuZCA9ICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFs0XScsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICdNaXNzaW5nIHNwYWNlIGFmdGVyICwgIFt3aGl0ZXNwYWNl
L2NvbW1hXSBbM10nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZihhLCAvKiBuYW1lICov
IGIpOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmKGEsIC8qIG5hbWUgKi9iKTsn
LCAnJykKLQotICAgIGRlZiB0ZXN0X3BvaW50ZXJfcmVmZXJlbmNlX21hcmtlcl9sb2NhdGlvbihz
ZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50KiBiOycsICcnLCAnZm9vLmNwcCcp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCAqYjsnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICdEZWNsYXJhdGlvbiBoYXMgc3BhY2UgYmV0d2VlbiB0eXBlIG5hbWUgYW5kICogaW4g
aW50ICpiICBbd2hpdGVzcGFjZS9kZWNsYXJhdGlvbl0gWzNdJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAnZm9vLmNwcCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3JldHVybiAqYjsn
LCAnJywgJ2Zvby5jcHAnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdkZWxldGUgKmI7Jywg
JycsICdmb28uY3BwJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50ICpiOycsICcnLCAn
Zm9vLmMnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQqIGI7JywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAnRGVjbGFyYXRpb24gaGFzIHNwYWNlIGJldHdlZW4gKiBhbmQgdmFyaWFi
bGUgbmFtZSBpbiBpbnQqIGIgIFt3aGl0ZXNwYWNlL2RlY2xhcmF0aW9uXSBbM10nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICdmb28uYycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lu
dCYgYjsnLCAnJywgJ2Zvby5jcHAnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgJmI7
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRGVjbGFyYXRpb24gaGFzIHNwYWNlIGJldHdl
ZW4gdHlwZSBuYW1lIGFuZCAmIGluIGludCAmYiAgW3doaXRlc3BhY2UvZGVjbGFyYXRpb25dIFsz
XScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvby5jcHAnKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdyZXR1cm4gJmI7JywgJycsICdmb28uY3BwJykKLQotICAgIGRlZiB0ZXN0X2lu
ZGVudChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RhdGljIGludCBub2luZGVu
dDsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgIGludCBmb3VyU3BhY2VJbmRl
bnQ7JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyBpbnQgb25lU3BhY2VJbmRlbnQ7
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnV2VpcmQgbnVtYmVyIG9mIHNwYWNlcyBhdCBs
aW5lLXN0YXJ0LiAgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdBcmUgeW91IHVzaW5nIGEg
NC1zcGFjZSBpbmRlbnQ/ICBbd2hpdGVzcGFjZS9pbmRlbnRdIFszXScpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJyAgIGludCB0aHJlZVNwYWNlSW5kZW50OycsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgJ1dlaXJkIG51bWJlciBvZiBzcGFjZXMgYXQgbGluZS1zdGFydC4gICcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnQXJlIHlvdSB1c2luZyBhIDQtc3BhY2UgaW5kZW50PyAgW3do
aXRlc3BhY2UvaW5kZW50XSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgY2hhciog
b25lU3BhY2VJbmRlbnQgPSAicHVibGljOiI7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAn
V2VpcmQgbnVtYmVyIG9mIHNwYWNlcyBhdCBsaW5lLXN0YXJ0LiAgJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICdBcmUgeW91IHVzaW5nIGEgNC1zcGFjZSBpbmRlbnQ/ICBbd2hpdGVzcGFjZS9p
bmRlbnRdIFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyBwdWJsaWM6JywgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgcHVibGljOicsICcnKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCcgICBwdWJsaWM6JywgJycpCi0KLSAgICBkZWYgdGVzdF9sYWJlbChzZWxmKToK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgncHVibGljOicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgJ0xhYmVscyBzaG91bGQgYWx3YXlzIGJlIGluZGVudGVkIGF0IGxlYXN0IG9uZSBzcGFj
ZS4gICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnSWYgdGhpcyBpcyBhIG1lbWJlci1pbml0
aWFsaXplciBsaXN0IGluIGEgY29uc3RydWN0b3IsICcKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAndGhlIGNvbG9uIHNob3VsZCBiZSBvbiB0aGUgbGluZSBhZnRlciB0aGUgZGVmaW5pdGlvbiAn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRlci4gIFt3aGl0ZXNwYWNlL2xhYmVsc10g
WzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICBwdWJsaWM6JywgJycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJyAgIHB1YmxpYzonLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnIHB1YmxpYzonLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICBwdWJsaWM6
JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgIHB1YmxpYzonLCAnJykKLQotICAg
IGRlZiB0ZXN0X25vdF9hbGFiZWwoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ015
VmVyeUxvbmdOYW1lc3BhY2U6Ok15VmVyeUxvbmdDbGFzc05hbWU6OicsICcnKQotCi0gICAgZGVm
IHRlc3RfdGFiKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdcdGludCBhOycsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJ1RhYiBmb3VuZDsgYmV0dGVyIHRvIHVzZSBzcGFjZXMg
IFt3aGl0ZXNwYWNlL3RhYl0gWzFdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGEg
PSA1O1x0Ly8gc2V0IGEgdG8gNScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1RhYiBmb3Vu
ZDsgYmV0dGVyIHRvIHVzZSBzcGFjZXMgIFt3aGl0ZXNwYWNlL3RhYl0gWzFdJykKLQotICAgIGRl
ZiB0ZXN0X3VubmFtZWRfbmFtZXNwYWNlc19pbl9oZWFkZXJzKHNlbGYpOgotICAgICAgICBzZWxm
LmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygKLSAgICAgICAgICAgICdmb28uaCcsICduYW1l
c3BhY2UgeycsCi0gICAgICAgICAgICAnRG8gbm90IHVzZSB1bm5hbWVkIG5hbWVzcGFjZXMgaW4g
aGVhZGVyIGZpbGVzLiAgU2VlJwotICAgICAgICAgICAgJyBodHRwOi8vZ29vZ2xlLXN0eWxlZ3Vp
ZGUuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcGd1aWRlLnhtbCNOYW1lc3BhY2VzJwotICAg
ICAgICAgICAgJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gIFtidWlsZC9uYW1lc3BhY2VzXSBbNF0n
KQotICAgICAgICAjIG5hbWVzcGFjZSByZWdpc3RyYXRpb24gbWFjcm9zIGFyZSBPSy4KLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5oJywgJ25hbWVzcGFjZSB7
ICBcXCcsICcnKQotICAgICAgICAjIG5hbWVkIG5hbWVzcGFjZXMgYXJlIE9LLgotICAgICAgICBz
ZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmgnLCAnbmFtZXNwYWNlIGZvbyB7
JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uaCcs
ICduYW1lc3BhY2UgZm9vbmFtZXNwYWNlIHsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGFu
Z3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5jcHAnLCAnbmFtZXNwYWNlIHsnLCAnJykKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5jcHAnLCAnbmFtZXNwYWNlIGZv
byB7JywgJycpCi0KLSAgICBkZWYgdGVzdF9idWlsZF9jbGFzcyhzZWxmKToKLSAgICAgICAgIyBU
ZXN0IHRoYXQgdGhlIGxpbnRlciBjYW4gcGFyc2UgdG8gdGhlIGVuZCBvZiBjbGFzcyBkZWZpbml0
aW9ucywKLSAgICAgICAgIyBhbmQgdGhhdCBpdCB3aWxsIHJlcG9ydCB3aGVuIGl0IGNhbid0Lgot
ICAgICAgICAjIFVzZSBtdWx0aS1saW5lIGxpbnRlciBiZWNhdXNlIGl0IHBlcmZvcm1zIHRoZSBD
bGFzc1N0YXRlIGNoZWNrLgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0g
ICAgICAgICAgICAnY2xhc3MgRm9vIHsnLAotICAgICAgICAgICAgJ0ZhaWxlZCB0byBmaW5kIGNv
bXBsZXRlIGRlY2xhcmF0aW9uIG9mIGNsYXNzIEZvbycKLSAgICAgICAgICAgICcgIFtidWlsZC9j
bGFzc10gWzVdJykKLSAgICAgICAgIyBEb24ndCB3YXJuIG9uIGZvcndhcmQgZGVjbGFyYXRpb25z
IG9mIHZhcmlvdXMgdHlwZXMuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
LSAgICAgICAgICAgICdjbGFzcyBGb287JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydzdHJ1Y3QgRm9vKgotICAg
ICAgICAgICAgICAgICBmb28gPSBOZXdGb28oKTsnJycsCi0gICAgICAgICAgICAnJykKLSAgICAg
ICAgIyBIZXJlIGlzIGFuIGV4YW1wbGUgd2hlcmUgdGhlIGxpbnRlciBnZXRzIGNvbmZ1c2VkLCBl
dmVuIHRob3VnaAotICAgICAgICAjIHRoZSBjb2RlIGRvZXNuJ3QgdmlvbGF0ZSB0aGUgc3R5bGUg
Z3VpZGUuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAg
ICcnJ2NsYXNzIEZvbwotICAgICAgICAgICAgI2lmZGVmIERFUklWRV9GUk9NX0dPTwotICAgICAg
ICAgICAgICA6IHB1YmxpYyBHb28gewotICAgICAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgICAg
OiBwdWJsaWMgSG9vIHsKLSAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICB9OycnJywK
LSAgICAgICAgICAgICdGYWlsZWQgdG8gZmluZCBjb21wbGV0ZSBkZWNsYXJhdGlvbiBvZiBjbGFz
cyBGb28nCi0gICAgICAgICAgICAnICBbYnVpbGQvY2xhc3NdIFs1XScpCi0KLSAgICBkZWYgdGVz
dF9idWlsZF9lbmRfY29tbWVudChzZWxmKToKLSAgICAgICAgIyBUaGUgY3Jvc3N0b29sIGNvbXBp
bGVyIHdlIGN1cnJlbnRseSB1c2Ugd2lsbCBmYWlsIHRvIGNvbXBpbGUgdGhlCi0gICAgICAgICMg
Y29kZSBpbiB0aGlzIHRlc3QsIHNvIHdlIG1pZ2h0IGNvbnNpZGVyIHJlbW92aW5nIHRoZSBsaW50
IGNoZWNrLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcjZW5kaWYgTm90IGEgY29tbWVudCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJ1VuY29tbWVudGVkIHRleHQgYWZ0ZXIgI2VuZGlm
IGlzIG5vbi1zdGFuZGFyZC4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgVXNlIGEgY29t
bWVudC4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW2J1aWxkL2VuZGlmX2NvbW1lbnRd
IFs1XScpCi0KLSAgICBkZWYgdGVzdF9idWlsZF9mb3J3YXJkX2RlY2woc2VsZik6Ci0gICAgICAg
ICMgVGhlIGNyb3NzdG9vbCBjb21waWxlciB3ZSBjdXJyZW50bHkgdXNlIHdpbGwgZmFpbCB0byBj
b21waWxlIHRoZQotICAgICAgICAjIGNvZGUgaW4gdGhpcyB0ZXN0LCBzbyB3ZSBtaWdodCBjb25z
aWRlciByZW1vdmluZyB0aGUgbGludCBjaGVjay4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
Y2xhc3MgRm9vOjpHb287JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnSW5uZXItc3R5bGUg
Zm9yd2FyZCBkZWNsYXJhdGlvbnMgYXJlIGludmFsaWQuJwotICAgICAgICAgICAgICAgICAgICAg
ICAgICcgIFJlbW92ZSB0aGlzIGxpbmUuJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFti
dWlsZC9mb3J3YXJkX2RlY2xdIFs1XScpCi0KLSAgICBkZWYgdGVzdF9idWlsZF9oZWFkZXJfZ3Vh
cmQoc2VsZik6Ci0gICAgICAgIGZpbGVfcGF0aCA9ICdteWRpci9Gb28uaCcKLQotICAgICAgICAj
IFdlIGNhbid0IHJlbHkgb24gb3VyIGludGVybmFsIHN0dWZmIHRvIGdldCBhIHNhbmUgcGF0aCBv
biB0aGUgb3BlbiBzb3VyY2UKLSAgICAgICAgIyBzaWRlIG9mIHRoaW5ncywgc28ganVzdCBwYXJz
ZSBvdXQgdGhlIHN1Z2dlc3RlZCBoZWFkZXIgZ3VhcmQuIFRoaXMKLSAgICAgICAgIyBkb2Vzbid0
IGFsbG93IHVzIHRvIHRlc3QgdGhlIHN1Z2dlc3RlZCBoZWFkZXIgZ3VhcmQsIGJ1dCBpdCBkb2Vz
IGxldCB1cwotICAgICAgICAjIHRlc3QgYWxsIHRoZSBvdGhlciBoZWFkZXIgdGVzdHMuCi0gICAg
ICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAg
ICAgc2VsZi5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywgW10sIGVycm9yX2NvbGxl
Y3RvcikKLSAgICAgICAgZXhwZWN0ZWRfZ3VhcmQgPSAnJwotICAgICAgICBtYXRjaGVyID0gcmUu
Y29tcGlsZSgKLSAgICAgICAgICAgICdObyBcI2lmbmRlZiBoZWFkZXIgZ3VhcmQgZm91bmRcLCBz
dWdnZXN0ZWQgQ1BQIHZhcmlhYmxlIGlzXDogKFtBLVphLXpfMC05XSspICcpCi0gICAgICAgIGZv
ciBlcnJvciBpbiBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKToKLSAgICAgICAgICAgIG1h
dGNoZXMgPSBtYXRjaGVyLm1hdGNoKGVycm9yKQotICAgICAgICAgICAgaWYgbWF0Y2hlczoKLSAg
ICAgICAgICAgICAgICBleHBlY3RlZF9ndWFyZCA9IG1hdGNoZXMuZ3JvdXAoMSkKLSAgICAgICAg
ICAgICAgICBicmVhawotCi0gICAgICAgICMgTWFrZSBzdXJlIHdlIGV4dHJhY3RlZCBzb21ldGhp
bmcgZm9yIG91ciBoZWFkZXIgZ3VhcmQuCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZXhw
ZWN0ZWRfZ3VhcmQsICcnKQotCi0gICAgICAgICMgV3JvbmcgZ3VhcmQKLSAgICAgICAgZXJyb3Jf
Y29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBzZWxmLnBy
b2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsnI2lmbmRlZiBGT09fSCcsICcjZGVmaW5lIEZPT19IJ10sIGVycm9yX2NvbGxlY3Rv
cikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCi0gICAgICAgICAgICAxLAotICAgICAgICAg
ICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291bnQoCi0gICAgICAgICAgICAgICAg
JyNpZm5kZWYgaGVhZGVyIGd1YXJkIGhhcyB3cm9uZyBzdHlsZSwgcGxlYXNlIHVzZTogJXMnCi0g
ICAgICAgICAgICAgICAgJyAgW2J1aWxkL2hlYWRlcl9ndWFyZF0gWzVdJyAlIGV4cGVjdGVkX2d1
YXJkKSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpKQotCi0gICAg
ICAgICMgTm8gZGVmaW5lCi0gICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9y
KHNlbGYuYXNzZXJ0XykKLSAgICAgICAgc2VsZi5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgs
ICdoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJyNpZm5kZWYgJXMnICUgZXhw
ZWN0ZWRfZ3VhcmRdLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KAotICAgICAgICAgICAgMSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlz
dCgpLmNvdW50KAotICAgICAgICAgICAgICAgICdObyAjaWZuZGVmIGhlYWRlciBndWFyZCBmb3Vu
ZCwgc3VnZ2VzdGVkIENQUCB2YXJpYWJsZSBpczogJXMnCi0gICAgICAgICAgICAgICAgJyAgW2J1
aWxkL2hlYWRlcl9ndWFyZF0gWzVdJyAlIGV4cGVjdGVkX2d1YXJkKSwKLSAgICAgICAgICAgIGVy
cm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpKQotCi0gICAgICAgICMgTWlzbWF0Y2hlZCBkZWZp
bmUKLSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRf
KQotICAgICAgICBzZWxmLnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiAlcycgJSBleHBlY3RlZF9ndWFyZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNkZWZpbmUgRk9PX0gnXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKAotICAgICAgICAgICAgMSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rv
ci5yZXN1bHRfbGlzdCgpLmNvdW50KAotICAgICAgICAgICAgICAgICdObyAjaWZuZGVmIGhlYWRl
ciBndWFyZCBmb3VuZCwgc3VnZ2VzdGVkIENQUCB2YXJpYWJsZSBpczogJXMnCi0gICAgICAgICAg
ICAgICAgJyAgW2J1aWxkL2hlYWRlcl9ndWFyZF0gWzVdJyAlIGV4cGVjdGVkX2d1YXJkKSwKLSAg
ICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpKQotCi0gICAgICAgICMgTm8g
aGVhZGVyIGd1YXJkIGVycm9ycwotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxl
Y3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9w
YXRoLCAnaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycjaWZuZGVmICVzJyAl
IGV4cGVjdGVkX2d1YXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2RlZmlu
ZSAlcycgJSBleHBlY3RlZF9ndWFyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyNlbmRpZiAvLyAlcycgJSBleHBlY3RlZF9ndWFyZF0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICBmb3IgbGluZSBpbiBlcnJvcl9jb2xs
ZWN0b3IucmVzdWx0X2xpc3QoKToKLSAgICAgICAgICAgIGlmIGxpbmUuZmluZCgnYnVpbGQvaGVh
ZGVyX2d1YXJkJykgIT0gLTE6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVk
IGVycm9yOiAlcycgJSBsaW5lKQotCi0gICAgICAgICMgQ29tcGxldGVseSBpbmNvcnJlY3QgaGVh
ZGVyIGd1YXJkCi0gICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYu
YXNzZXJ0XykKLSAgICAgICAgc2VsZi5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJyNpZm5kZWYgRk9PJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJyNkZWZpbmUgRk9PJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJyNlbmRpZiAgLy8gRk9PJ10sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKLSAg
ICAgICAgICAgIDEsCi0gICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKS5j
b3VudCgKLSAgICAgICAgICAgICAgICAnI2lmbmRlZiBoZWFkZXIgZ3VhcmQgaGFzIHdyb25nIHN0
eWxlLCBwbGVhc2UgdXNlOiAlcycKLSAgICAgICAgICAgICAgICAnICBbYnVpbGQvaGVhZGVyX2d1
YXJkXSBbNV0nICUgZXhwZWN0ZWRfZ3VhcmQpLAotICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9y
LnJlc3VsdF9saXN0KCkpCi0KLSAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIGZseW1ha2UKLSAg
ICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAg
ICAgICBzZWxmLnByb2Nlc3NfZmlsZV9kYXRhKCdteWRpci9Gb29fZmx5bWFrZS5oJywgJ2gnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiAlcycgJSBleHBlY3RlZF9n
dWFyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNkZWZpbmUgJXMnICUgZXhw
ZWN0ZWRfZ3VhcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZW5kaWYgLy8g
JXMnICUgZXhwZWN0ZWRfZ3VhcmRdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy
cm9yX2NvbGxlY3RvcikKLSAgICAgICAgZm9yIGxpbmUgaW4gZXJyb3JfY29sbGVjdG9yLnJlc3Vs
dF9saXN0KCk6Ci0gICAgICAgICAgICBpZiBsaW5lLmZpbmQoJ2J1aWxkL2hlYWRlcl9ndWFyZCcp
ICE9IC0xOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBlcnJvcjogJXMn
ICUgbGluZSkKLQotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxm
LmFzc2VydF8pCi0gICAgICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEoJ215ZGlyL0Zvb19mbHlt
YWtlLmgnLCAnaCcsIFtdLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKAotICAgICAgICAgICAgMSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRf
bGlzdCgpLmNvdW50KAotICAgICAgICAgICAgICAgICdObyAjaWZuZGVmIGhlYWRlciBndWFyZCBm
b3VuZCwgc3VnZ2VzdGVkIENQUCB2YXJpYWJsZSBpczogJXMnCi0gICAgICAgICAgICAgICAgJyAg
W2J1aWxkL2hlYWRlcl9ndWFyZF0gWzVdJyAlIGV4cGVjdGVkX2d1YXJkKSwKLSAgICAgICAgICAg
IGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpKQotCi0gICAgZGVmIHRlc3RfYnVpbGRfcHJp
bnRmX2Zvcm1hdChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAg
IHIncHJpbnRmKCJcJSVkIiwgdmFsdWUpOycsCi0gICAgICAgICAgICAnJSwgWywgKCwgYW5kIHsg
YXJlIHVuZGVmaW5lZCBjaGFyYWN0ZXIgZXNjYXBlcy4gIFVuZXNjYXBlIHRoZW0uJwotICAgICAg
ICAgICAgJyAgW2J1aWxkL3ByaW50Zl9mb3JtYXRdIFszXScpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgKLSAgICAgICAgICAgIHInc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwg
IlxbJWQiLCB2YWx1ZSk7JywKLSAgICAgICAgICAgICclLCBbLCAoLCBhbmQgeyBhcmUgdW5kZWZp
bmVkIGNoYXJhY3RlciBlc2NhcGVzLiAgVW5lc2NhcGUgdGhlbS4nCi0gICAgICAgICAgICAnICBb
YnVpbGQvcHJpbnRmX2Zvcm1hdF0gWzNdJykKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAot
ICAgICAgICAgICAgcidmcHJpbnRmKGZpbGUsICJcKCVkIiwgdmFsdWUpOycsCi0gICAgICAgICAg
ICAnJSwgWywgKCwgYW5kIHsgYXJlIHVuZGVmaW5lZCBjaGFyYWN0ZXIgZXNjYXBlcy4gIFVuZXNj
YXBlIHRoZW0uJwotICAgICAgICAgICAgJyAgW2J1aWxkL3ByaW50Zl9mb3JtYXRdIFszXScpCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgIHIndnNucHJpbnRmKGJ1ZmZl
ciwgc2l6ZW9mKGJ1ZmZlciksICJcXFx7JWQiLCBhcCk7JywKLSAgICAgICAgICAgICclLCBbLCAo
LCBhbmQgeyBhcmUgdW5kZWZpbmVkIGNoYXJhY3RlciBlc2NhcGVzLiAgVW5lc2NhcGUgdGhlbS4n
Ci0gICAgICAgICAgICAnICBbYnVpbGQvcHJpbnRmX2Zvcm1hdF0gWzNdJykKLQotICAgICAgICAj
IERvbid0IHdhcm4gaWYgZG91YmxlLXNsYXNoIHByZWNlZGVzIHRoZSBzeW1ib2wKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludChyJ3ByaW50ZigiXFwlJSVkIiwgdmFsdWUpOycsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgJycpCi0KLSAgICBkZWYgdGVzdF9ydW50aW1lX3ByaW50Zl9mb3JtYXQo
c2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICByJ2ZwcmludGYo
ZmlsZSwgIiVxIiwgdmFsdWUpOycsCi0gICAgICAgICAgICAnJXEgaW4gZm9ybWF0IHN0cmluZ3Mg
aXMgZGVwcmVjYXRlZC4gIFVzZSAlbGwgaW5zdGVhZC4nCi0gICAgICAgICAgICAnICBbcnVudGlt
ZS9wcmludGZfZm9ybWF0XSBbM10nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAg
ICAgICAgICByJ2FwcmludGYoZmlsZSwgIlRoZSBudW1iZXIgaXMgJTEycSIsIHZhbHVlKTsnLAot
ICAgICAgICAgICAgJyVxIGluIGZvcm1hdCBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxs
IGluc3RlYWQuJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmX2Zvcm1hdF0gWzNdJykK
LQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgcidwcmludGYoZmlsZSwg
IlRoZSBudW1iZXIgaXMiICIlLTEycSIsIHZhbHVlKTsnLAotICAgICAgICAgICAgJyVxIGluIGZv
cm1hdCBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxsIGluc3RlYWQuJwotICAgICAgICAg
ICAgJyAgW3J1bnRpbWUvcHJpbnRmX2Zvcm1hdF0gWzNdJykKLQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KAotICAgICAgICAgICAgcidwcmludGYoZmlsZSwgIlRoZSBudW1iZXIgaXMiICIlKzEy
cSIsIHZhbHVlKTsnLAotICAgICAgICAgICAgJyVxIGluIGZvcm1hdCBzdHJpbmdzIGlzIGRlcHJl
Y2F0ZWQuICBVc2UgJWxsIGluc3RlYWQuJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRm
X2Zvcm1hdF0gWzNdJykKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAg
cidwcmludGYoZmlsZSwgIlRoZSBudW1iZXIgaXMiICIlIDEycSIsIHZhbHVlKTsnLAotICAgICAg
ICAgICAgJyVxIGluIGZvcm1hdCBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxsIGluc3Rl
YWQuJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmX2Zvcm1hdF0gWzNdJykKLQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgcidzbnByaW50ZihmaWxlLCAiTmV2
ZXIgbWl4ICVkIGFuZCAlMSRkIHBhcm1hZXRlcnMhIiwgdmFsdWUpOycsCi0gICAgICAgICAgICAn
JU4kIGZvcm1hdHMgYXJlIHVuY29udmVudGlvbmFsLiAgVHJ5IHJld3JpdGluZyB0byBhdm9pZCB0
aGVtLicKLSAgICAgICAgICAgICcgIFtydW50aW1lL3ByaW50Zl9mb3JtYXRdIFsyXScpCi0KLSAg
ICBkZWYgYXNzZXJ0X2xpbnRMb2dDb2RlT25FcnJvcihzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNz
YWdlKToKLSAgICAgICAgIyBTcGVjaWFsIGFzc2VydF9saW50IHdoaWNoIGxvZ3MgdGhlIGlucHV0
IGNvZGUgb24gZXJyb3IuCi0gICAgICAgIHJlc3VsdCA9IHNlbGYucGVyZm9ybV9zaW5nbGVfbGlu
ZV9saW50KGNvZGUsICdmb28uY3BwJykKLSAgICAgICAgaWYgcmVzdWx0ICE9IGV4cGVjdGVkX21l
c3NhZ2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ0ZvciBjb2RlOiAiJXMiXG5Hb3Q6ICIlcyJc
bkV4cGVjdGVkOiAiJXMiJwotICAgICAgICAgICAgICAgICAgICAgICUgKGNvZGUsIHJlc3VsdCwg
ZXhwZWN0ZWRfbWVzc2FnZSkpCi0KLSAgICBkZWYgdGVzdF9idWlsZF9zdG9yYWdlX2NsYXNzKHNl
bGYpOgotICAgICAgICBxdWFsaWZpZXJzID0gW05vbmUsICdjb25zdCcsICd2b2xhdGlsZSddCi0g
ICAgICAgIHNpZ25zID0gW05vbmUsICdzaWduZWQnLCAndW5zaWduZWQnXQotICAgICAgICB0eXBl
cyA9IFsndm9pZCcsICdjaGFyJywgJ2ludCcsICdmbG9hdCcsICdkb3VibGUnLAotICAgICAgICAg
ICAgICAgICAnc2NoYXInLCAnaW50OCcsICd1aW50OCcsICdpbnQxNicsICd1aW50MTYnLAotICAg
ICAgICAgICAgICAgICAnaW50MzInLCAndWludDMyJywgJ2ludDY0JywgJ3VpbnQ2NCddCi0gICAg
ICAgIHN0b3JhZ2VfY2xhc3NlcyA9IFsnYXV0bycsICdleHRlcm4nLCAncmVnaXN0ZXInLCAnc3Rh
dGljJywgJ3R5cGVkZWYnXQotCi0gICAgICAgIGJ1aWxkX3N0b3JhZ2VfY2xhc3NfZXJyb3JfbWVz
c2FnZSA9ICgKLSAgICAgICAgICAgICdTdG9yYWdlIGNsYXNzIChzdGF0aWMsIGV4dGVybiwgdHlw
ZWRlZiwgZXRjKSBzaG91bGQgYmUgZmlyc3QuJwotICAgICAgICAgICAgJyAgW2J1aWxkL3N0b3Jh
Z2VfY2xhc3NdIFs1XScpCi0KLSAgICAgICAgIyBTb21lIGV4cGxpY2l0IGNhc2VzLiBMZWdhbCBp
biBDKyssIGRlcHJlY2F0ZWQgaW4gQzk5LgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjb25z
dCBpbnQgc3RhdGljIGZvbyA9IDU7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9z
dG9yYWdlX2NsYXNzX2Vycm9yX21lc3NhZ2UpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
Y2hhciBzdGF0aWMgZm9vOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfc3RvcmFn
ZV9jbGFzc19lcnJvcl9tZXNzYWdlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2RvdWJs
ZSBjb25zdCBzdGF0aWMgZm9vID0gMi4wOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYnVp
bGRfc3RvcmFnZV9jbGFzc19lcnJvcl9tZXNzYWdlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3VpbnQ2NCB0eXBlZGVmIHVuc2lnbmVkTG9uZ0xvbmc7JywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBidWlsZF9zdG9yYWdlX2NsYXNzX2Vycm9yX21lc3NhZ2UpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnaW50IHJlZ2lzdGVyIGZvbyA9IDA7JywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBidWlsZF9zdG9yYWdlX2NsYXNzX2Vycm9yX21lc3NhZ2UpCi0KLSAgICAgICAgIyBT
aW5jZSB0aGVyZSBhcmUgYSB2ZXJ5IGxhcmdlIG51bWJlciBvZiBwb3NzaWJpbGl0aWVzLCByYW5k
b21seQotICAgICAgICAjIGNvbnN0cnVjdCBkZWNsYXJhdGlvbnMuCi0gICAgICAgICMgTWFrZSBz
dXJlIHRoYXQgdGhlIGRlY2xhcmF0aW9uIGlzIGxvZ2dlZCBpZiB0aGVyZSdzIGFuIGVycm9yLgot
ICAgICAgICAjIFNlZWQgZ2VuZXJhdG9yIHdpdGggYW4gaW50ZWdlciBmb3IgYWJzb2x1dGUgcmVw
cm9kdWNpYmlsaXR5LgotICAgICAgICByYW5kb20uc2VlZCgyNSkKLSAgICAgICAgZm9yIHVudXNl
ZF9pIGluIHJhbmdlKDEwKToKLSAgICAgICAgICAgICMgQnVpbGQgdXAgcmFuZG9tIGxpc3Qgb2Yg
bm9uLXN0b3JhZ2UtY2xhc3MgZGVjbGFyYXRpb24gc3BlY3MuCi0gICAgICAgICAgICBvdGhlcl9k
ZWNsX3NwZWNzID0gW3JhbmRvbS5jaG9pY2UocXVhbGlmaWVycyksIHJhbmRvbS5jaG9pY2Uoc2ln
bnMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kb20uY2hvaWNlKHR5cGVz
KV0KLSAgICAgICAgICAgICMgcmVtb3ZlIE5vbmUKLSAgICAgICAgICAgIG90aGVyX2RlY2xfc3Bl
Y3MgPSBmaWx0ZXIobGFtYmRhIHg6IHggaXMgbm90IE5vbmUsIG90aGVyX2RlY2xfc3BlY3MpCi0K
LSAgICAgICAgICAgICMgc2h1ZmZsZQotICAgICAgICAgICAgcmFuZG9tLnNodWZmbGUob3RoZXJf
ZGVjbF9zcGVjcykKLQotICAgICAgICAgICAgIyBpbnNlcnQgc3RvcmFnZSBjbGFzcyBhZnRlciB0
aGUgZmlyc3QKLSAgICAgICAgICAgIHN0b3JhZ2VfY2xhc3MgPSByYW5kb20uY2hvaWNlKHN0b3Jh
Z2VfY2xhc3NlcykKLSAgICAgICAgICAgIGluc2VydGlvbl9wb2ludCA9IHJhbmRvbS5yYW5kaW50
KDEsIGxlbihvdGhlcl9kZWNsX3NwZWNzKSkKLSAgICAgICAgICAgIGRlY2xfc3BlY3MgPSAob3Ro
ZXJfZGVjbF9zcGVjc1swOmluc2VydGlvbl9wb2ludF0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgKyBbc3RvcmFnZV9jbGFzc10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgKyBvdGhlcl9k
ZWNsX3NwZWNzW2luc2VydGlvbl9wb2ludDpdKQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydF9s
aW50TG9nQ29kZU9uRXJyb3IoCi0gICAgICAgICAgICAgICAgJyAnLmpvaW4oZGVjbF9zcGVjcykg
KyAnOycsCi0gICAgICAgICAgICAgICAgYnVpbGRfc3RvcmFnZV9jbGFzc19lcnJvcl9tZXNzYWdl
KQotCi0gICAgICAgICAgICAjIGJ1dCBubyBlcnJvciBpZiBzdG9yYWdlIGNsYXNzIGlzIGZpcnN0
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydF9saW50TG9nQ29kZU9uRXJyb3IoCi0gICAgICAgICAg
ICAgICAgc3RvcmFnZV9jbGFzcyArICcgJyArICcgJy5qb2luKG90aGVyX2RlY2xfc3BlY3MpLAot
ICAgICAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRlc3RfbGVnYWxfY29weXJpZ2h0KHNlbGYp
OgotICAgICAgICBsZWdhbF9jb3B5cmlnaHRfbWVzc2FnZSA9ICgKLSAgICAgICAgICAgICdObyBj
b3B5cmlnaHQgbWVzc2FnZSBmb3VuZC4gICcKLSAgICAgICAgICAgICdZb3Ugc2hvdWxkIGhhdmUg
YSBsaW5lOiAiQ29weXJpZ2h0IFt5ZWFyXSA8Q29weXJpZ2h0IE93bmVyPiInCi0gICAgICAgICAg
ICAnICBbbGVnYWwvY29weXJpZ2h0XSBbNV0nKQotCi0gICAgICAgIGNvcHlyaWdodF9saW5lID0g
Jy8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuJwotCi0g
ICAgICAgIGZpbGVfcGF0aCA9ICdteWRpci9nb29nbGVjbGllbnQvZm9vLmNwcCcKLQotICAgICAg
ICAjIFRoZXJlIHNob3VsZCBiZSBhIGNvcHlyaWdodCBtZXNzYWdlIGluIHRoZSBmaXJzdCAxMCBs
aW5lcwotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2Vy
dF8pCi0gICAgICAgIHNlbGYucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAnY3BwJywgW10s
IGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCi0gICAgICAgICAg
ICAxLAotICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291bnQobGVn
YWxfY29weXJpZ2h0X21lc3NhZ2UpKQotCi0gICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9y
Q29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgc2VsZi5wcm9jZXNzX2ZpbGVfZGF0YSgK
LSAgICAgICAgICAgIGZpbGVfcGF0aCwgJ2NwcCcsCi0gICAgICAgICAgICBbJycgZm9yIHVudXNl
ZF9pIGluIHJhbmdlKDEwKV0gKyBbY29weXJpZ2h0X2xpbmVdLAotICAgICAgICAgICAgZXJyb3Jf
Y29sbGVjdG9yKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKLSAgICAgICAgICAgIDEsCi0g
ICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKS5jb3VudChsZWdhbF9jb3B5
cmlnaHRfbWVzc2FnZSkpCi0KLSAgICAgICAgIyBUZXN0IHRoYXQgd2FybmluZyBpc24ndCBpc3N1
ZWQgaWYgQ29weXJpZ2h0IGxpbmUgYXBwZWFycyBlYXJseSBlbm91Z2guCi0gICAgICAgIGVycm9y
X2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgc2VsZi5w
cm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdjcHAnLCBbY29weXJpZ2h0X2xpbmVdLCBlcnJv
cl9jb2xsZWN0b3IpCi0gICAgICAgIGZvciBtZXNzYWdlIGluIGVycm9yX2NvbGxlY3Rvci5yZXN1
bHRfbGlzdCgpOgotICAgICAgICAgICAgaWYgbWVzc2FnZS5maW5kKCdsZWdhbC9jb3B5cmlnaHQn
KSAhPSAtMToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZXJyb3I6ICVz
JyAlIG1lc3NhZ2UpCi0KLSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Io
c2VsZi5hc3NlcnRfKQotICAgICAgICBzZWxmLnByb2Nlc3NfZmlsZV9kYXRhKAotICAgICAgICAg
ICAgZmlsZV9wYXRoLCAnY3BwJywKLSAgICAgICAgICAgIFsnJyBmb3IgdW51c2VkX2kgaW4gcmFu
Z2UoOSldICsgW2NvcHlyaWdodF9saW5lXSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikK
LSAgICAgICAgZm9yIG1lc3NhZ2UgaW4gZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCk6Ci0g
ICAgICAgICAgICBpZiBtZXNzYWdlLmZpbmQoJ2xlZ2FsL2NvcHlyaWdodCcpICE9IC0xOgotICAg
ICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBlcnJvcjogJXMnICUgbWVzc2FnZSkK
LQotICAgIGRlZiB0ZXN0X2ludmFsaWRfaW5jcmVtZW50KHNlbGYpOgotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCcqY291bnQrKzsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdDaGFuZ2lu
ZyBwb2ludGVyIGluc3RlYWQgb2YgdmFsdWUgKG9yIHVudXNlZCB2YWx1ZSBvZiAnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgJ29wZXJhdG9yKikuICBbcnVudGltZS9pbnZhbGlkX2luY3JlbWVu
dF0gWzVdJykKLQotCi1jbGFzcyBDbGVhbnNlZExpbmVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
Ci0gICAgZGVmIHRlc3RfaW5pdChzZWxmKToKLSAgICAgICAgbGluZXMgPSBbJ0xpbmUgMScsCi0g
ICAgICAgICAgICAgICAgICdMaW5lIDInLAotICAgICAgICAgICAgICAgICAnTGluZSAzIC8vIENv
bW1lbnQgdGVzdCcsCi0gICAgICAgICAgICAgICAgICdMaW5lIDQgImZvbyInXQotCi0gICAgICAg
IGNsZWFuX2xpbmVzID0gY3BwX3N0eWxlLkNsZWFuc2VkTGluZXMobGluZXMpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKGxpbmVzLCBjbGVhbl9saW5lcy5yYXdfbGluZXMpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKDQsIGNsZWFuX2xpbmVzLm51bV9saW5lcygpKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKFsnTGluZSAxJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdM
aW5lIDInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xpbmUgMyAnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0xpbmUgNCAiZm9vIiddLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbGVhbl9saW5lcy5saW5lcykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ0xp
bmUgMScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnTGluZSAyJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdMaW5lIDMgJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdM
aW5lIDQgIiInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW5fbGluZXMuZWxpZGVk
KQotCi0gICAgZGVmIHRlc3RfaW5pdF9lbXB0eShzZWxmKToKLSAgICAgICAgY2xlYW5fbGluZXMg
PSBjcHBfc3R5bGUuQ2xlYW5zZWRMaW5lcyhbXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
W10sIGNsZWFuX2xpbmVzLnJhd19saW5lcykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwg
Y2xlYW5fbGluZXMubnVtX2xpbmVzKCkpCi0KLSAgICBkZWYgdGVzdF9jb2xsYXBzZV9zdHJpbmdz
KHNlbGYpOgotICAgICAgICBjb2xsYXBzZSA9IGNwcF9zdHlsZS5DbGVhbnNlZExpbmVzLmNvbGxh
cHNlX3N0cmluZ3MKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyIiJywgY29sbGFwc2UoJyIi
JykpICAgICAgICAgICAgICMgIiIgICAgIChlbXB0eSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoJyIiIicsIGNvbGxhcHNlKCciIiInKSkgICAgICAgICAgICMgIiIiICAgIChiYWQpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCciIicsIGNvbGxhcHNlKCcieHl6IicpKSAgICAgICAgICAj
ICJ4eXoiICAoc3RyaW5nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnIiInLCBjb2xsYXBz
ZSgnIlxcXCIiJykpICAgICAgICAgIyAiXCIiICAgKHN0cmluZykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoJyIiJywgY29sbGFwc2UoJyJcJyInKSkgICAgICAgICAgICMgIiciICAgIChzdHJp
bmcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCciXCInLCBjb2xsYXBzZSgnIlwiJykpICAg
ICAgICAgICAjICJcIiAgICAoYmFkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnIiInLCBj
b2xsYXBzZSgnIlxcXFwiJykpICAgICAgICAgIyAiXFwiICAgKHN0cmluZykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoJyInLCBjb2xsYXBzZSgnIlxcXFxcXCInKSkgICAgICAgICMgIlxcXCIg
IChiYWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCciIicsIGNvbGxhcHNlKCciXFxcXFxc
XFwiJykpICAgICAjICJcXFxcIiAoc3RyaW5nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KCdcJ1wnJywgY29sbGFwc2UoJ1wnXCcnKSkgICAgICAgICAjICcnICAgICAoZW1wdHkpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdcJ1wnJywgY29sbGFwc2UoJ1wnYVwnJykpICAgICAgICAj
ICdhJyAgICAoY2hhcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ1wnXCcnLCBjb2xsYXBz
ZSgnXCdcXFwnXCcnKSkgICAgICMgJ1wnJyAgIChjaGFyKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscygnXCcnLCBjb2xsYXBzZSgnXCdcXFwnJykpICAgICAgICAgIyAnXCcgICAgKGJhZCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJycsIGNvbGxhcHNlKCdcXDAxMicpKSAgICAgICAgICAg
ICMgJ1wwMTInIChjaGFyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnJywgY29sbGFwc2Uo
J1xceGZGMCcpKSAgICAgICAgICAgIyAnXHhmRjAnIChjaGFyKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygnJywgY29sbGFwc2UoJ1xcbicpKSAgICAgICAgICAgICAgIyAnXG4nIChjaGFyKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnXCMnLCBjb2xsYXBzZSgnXFwjJykpICAgICAgICAg
ICAgIyAnXCMnIChiYWQpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ1N0cmluZ1JlcGxh
Y2UoYm9keSwgIiIsICIiKTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZSgn
U3RyaW5nUmVwbGFjZShib2R5LCAiXFxcXCIsICJcXFxcXFxcXCIpOycpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygnXCdcJyAiIicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxh
cHNlKCdcJyJcJyAiZm9vIicpKQotCi0KLWNsYXNzIE9yZGVyT2ZJbmNsdWRlc1Rlc3QoQ3BwU3R5
bGVUZXN0QmFzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmluY2x1ZGVf
c3RhdGUgPSBjcHBfc3R5bGUuX0luY2x1ZGVTdGF0ZSgpCi0KLSAgICAgICAgIyBDaGVhdCBvcy5w
YXRoLmFic3BhdGggY2FsbGVkIGluIEZpbGVJbmZvIGNsYXNzLgotICAgICAgICBzZWxmLm9zX3Bh
dGhfYWJzcGF0aF9vcmlnID0gb3MucGF0aC5hYnNwYXRoCi0gICAgICAgIG9zLnBhdGguYWJzcGF0
aCA9IGxhbWJkYSB2YWx1ZTogdmFsdWUKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAg
ICAgb3MucGF0aC5hYnNwYXRoID0gc2VsZi5vc19wYXRoX2Fic3BhdGhfb3JpZwotCi0gICAgZGVm
IHRlc3RfdHJ5X2Ryb3BfY29tbW9uX3N1ZmZpeGVzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdmb28vZm9vJywgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zv
by1pbmwuaCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28vYmFyL2ZvbycsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9v
L2Jhci9mb29faW5sLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vL2ZvbycsIGNw
cF9zdHlsZS5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9mb28uY3BwJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ2Zvby9mb29fdW51c3VhbGludGVybmFsJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBjcHBfc3R5bGUuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vZm9vX3VudXN1
YWxpbnRlcm5hbC5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygnX3Rlc3QuY3Bw
JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Rlc3QnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGNwcF9zdHlsZS5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ3Rlc3QuY3BwJykpCi0KLQot
Y2xhc3MgT3JkZXJPZkluY2x1ZGVzVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKLSAgICBkZWYgc2V0
VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuaW5jbHVkZV9zdGF0ZSA9IGNwcF9zdHlsZS5fSW5jbHVk
ZVN0YXRlKCkKLQotICAgICAgICAjIENoZWF0IG9zLnBhdGguYWJzcGF0aCBjYWxsZWQgaW4gRmls
ZUluZm8gY2xhc3MuCi0gICAgICAgIHNlbGYub3NfcGF0aF9hYnNwYXRoX29yaWcgPSBvcy5wYXRo
LmFic3BhdGgKLSAgICAgICAgb3MucGF0aC5hYnNwYXRoID0gbGFtYmRhIHZhbHVlOiB2YWx1ZQot
Ci0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBvcy5wYXRoLmFic3BhdGggPSBzZWxm
Lm9zX3BhdGhfYWJzcGF0aF9vcmlnCi0KLSAgICBkZWYgdGVzdF9jaGVja19uZXh0X2luY2x1ZGVf
b3JkZXJfX25vX2NvbmZpZyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVhZGVy
IGZpbGUgc2hvdWxkIG5vdCBjb250YWluIFdlYkNvcmUgY29uZmlnLmguJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVy
KGNwcF9zdHlsZS5fQ09ORklHX0hFQURFUiwgVHJ1ZSkpCi0KLSAgICBkZWYgdGVzdF9jaGVja19u
ZXh0X2luY2x1ZGVfb3JkZXJfX25vX3NlbGYoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ0hlYWRlciBmaWxlIHNob3VsZCBub3QgY29udGFpbiBpdHNlbGYuJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVy
KGNwcF9zdHlsZS5fUFJJTUFSWV9IRUFERVIsIFRydWUpKQotICAgICAgICAjIFRlc3QgYWN0dWFs
IGNvZGUgdG8gbWFrZSBzdXJlIHRoYXQgaGVhZGVyIHR5cGVzIGFyZSBjb3JyZWN0bHkgYXNzaWdu
ZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdGb28uaCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiRm9vLmgi
XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSGVhZGVyIGZp
bGUgc2hvdWxkIG5vdCBjb250YWluIGl0c2VsZi4gU2hvdWxkIGJlOiBhbHBoYWJldGljYWxseSBz
b3J0ZWQuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBbYnVp
bGQvaW5jbHVkZV9vcmRlcl0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVs
ZXNfY2hlY2soJ0Zvb0Jhci5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyNpbmNsdWRlICJGb28uaCJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRlc3RfY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVy
X19saWtlbHlfdGhlbl9jb25maWcoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0Zv
dW5kIGhlYWRlciB0aGlzIGZpbGUgaW1wbGVtZW50cyBiZWZvcmUgV2ViQ29yZSBjb25maWcuaC4n
LAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0
X2luY2x1ZGVfb3JkZXIoY3BwX3N0eWxlLl9QUklNQVJZX0hFQURFUiwgRmFsc2UpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdGb3VuZCBXZWJDb3JlIGNvbmZpZy5oIGFmdGVyIGEgaGVhZGVy
IHRoaXMgZmlsZSBpbXBsZW1lbnRzLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5p
bmNsdWRlX3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9vcmRlcihjcHBfc3R5bGUuX0NPTkZJR19I
RUFERVIsIEZhbHNlKSkKLQotICAgIGRlZiB0ZXN0X2NoZWNrX25leHRfaW5jbHVkZV9vcmRlcl9f
b3RoZXJfdGhlbl9jb25maWcoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ZvdW5k
IG90aGVyIGhlYWRlciBiZWZvcmUgV2ViQ29yZSBjb25maWcuaC4nLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoY3Bw
X3N0eWxlLl9PVEhFUl9IRUFERVIsIEZhbHNlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
Rm91bmQgV2ViQ29yZSBjb25maWcuaCBhZnRlciBvdGhlciBoZWFkZXIuJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVy
KGNwcF9zdHlsZS5fQ09ORklHX0hFQURFUiwgRmFsc2UpKQotCi0gICAgZGVmIHRlc3RfY2hlY2tf
bmV4dF9pbmNsdWRlX29yZGVyX19jb25maWdfdGhlbl9vdGhlcl90aGVuX2xpa2VseShzZWxmKToK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgc2VsZi5pbmNsdWRlX3N0YXRlLmNoZWNrX25l
eHRfaW5jbHVkZV9vcmRlcihjcHBfc3R5bGUuX0NPTkZJR19IRUFERVIsIEZhbHNlKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnRm91bmQgb3RoZXIgaGVhZGVyIGJlZm9yZSBhIGhlYWRlciB0
aGlzIGZpbGUgaW1wbGVtZW50cy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5j
bHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoY3BwX3N0eWxlLl9PVEhFUl9IRUFE
RVIsIEZhbHNlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRm91bmQgaGVhZGVyIHRoaXMg
ZmlsZSBpbXBsZW1lbnRzIGFmdGVyIG90aGVyIGhlYWRlci4nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoY3BwX3N0
eWxlLl9QUklNQVJZX0hFQURFUiwgRmFsc2UpKQotCi0gICAgZGVmIHRlc3RfY2hlY2tfYWxwaGFi
ZXRpY2FsX2luY2x1ZGVfb3JkZXIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdl
X3J1bGVzX2NoZWNrKCdmb28uaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjaW5jbHVkZSAiYS5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnI2luY2x1ZGUgImMuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJyNpbmNsdWRlICJiLmgiXG4nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnQWxwaGFiZXRpY2FsIHNvcnRpbmcgcHJvYmxlbS4gIFtidWls
ZC9pbmNsdWRlX29yZGVyXSBbNF0nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1
bGVzX2NoZWNrKCdmb28uaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcjaW5jbHVkZSAiYS5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnI2luY2x1ZGUgImIuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyNpbmNsdWRlICJjLmgiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnJykKLQotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxl
c19jaGVjaygnZm9vLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnI2luY2x1ZGUgPGFzc2VydC5oPlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnI2luY2x1ZGUgImJhci5oIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0FscGhhYmV0aWNhbCBzb3J0aW5nIHByb2JsZW0uICBbYnVpbGQv
aW5jbHVkZV9vcmRlcl0gWzRdJykKLQotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxl
c19jaGVjaygnZm9vLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnI2luY2x1ZGUgImJhci5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnI2luY2x1ZGUgPGFzc2VydC5oPlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJycpCi0KLSAgICBkZWYgdGVzdF9jaGVja19saW5lX2JyZWFrX2Fm
dGVyX293bl9oZWFkZXIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVz
X2NoZWNrKCdmb28uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJyNpbmNsdWRlICJjb25maWcuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyNpbmNsdWRlICJmb28uaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJiYXIuaCJcbicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdZb3Ugc2hvdWxkIGFkZCBhIGJsYW5rIGxpbmUgYWZ0
ZXIgaW1wbGVtZW50YXRpb24gZmlsZVwncyBvd24gaGVhZGVyLiAgW2J1aWxkL2luY2x1ZGVfb3Jk
ZXJdIFs0XScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zv
by5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1
ZGUgImNvbmZpZy5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnI2luY2x1ZGUgImZvby5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcj
aW5jbHVkZSAiYmFyLmgiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnJykKLQotICAgIGRlZiB0ZXN0X2NoZWNrX3ByZXByb2Nlc3Nvcl9pbl9pbmNsdWRlX3Nl
Y3Rpb24oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdm
b28uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNs
dWRlICJjb25maWcuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJyNpbmNsdWRlICJmb28uaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
I2lmZGVmIEJBWlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
I2luY2x1ZGUgImJhei5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnI2Vsc2VcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyNpbmNsdWRlICJmb29iYXIuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyNlbmRpZiJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyNpbmNsdWRlICJiYXIuaCJcbicsICMgTm8gZmxhZyBiZWNhdXNlIHByZXZpb3VzIGlz
IGluIHByZXByb2Nlc3NvciBzZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNr
KCdmb28uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNp
bmNsdWRlICJjb25maWcuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyNpbmNsdWRlICJmb28uaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnI2lmZGVmIEJBWlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnI2luY2x1ZGUgImJhei5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnI2VuZGlmIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnI2luY2x1ZGUgImJhci5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnI2luY2x1ZGUgImEuaCJcbicsICMgU2hvdWxkIHN0aWxsIGZsYWcgdGhpcy4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FscGhhYmV0aWNhbCBz
b3J0aW5nIHByb2JsZW0uICBbYnVpbGQvaW5jbHVkZV9vcmRlcl0gWzRdJykKLQotICAgICAgICBz
ZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmNwcCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiY29uZmlnLmgiXG4nCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiZm9vLmgiXG4n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpZmRlZiBCQVpcbicKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJiYXouaCJcbicKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJiYXIuaCJc
bicgI1Nob3VsZCBzdGlsbCBmbGFnIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyNlbmRpZiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdBbHBoYWJldGljYWwgc29ydGluZyBwcm9ibGVtLiAgW2J1aWxkL2luY2x1ZGVf
b3JkZXJdIFs0XScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2so
J2Zvby5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2lu
Y2x1ZGUgImNvbmZpZy5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnI2luY2x1ZGUgImZvby5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcjaWZkZWYgQkFaXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcjaW5jbHVkZSAiYmF6LmgiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjZW5kaWYiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcjaWZkZWYgRk9PQkFSXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjaW5jbHVkZSAiZm9vYmFyLmgiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcjZW5kaWYiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICcjaW5jbHVkZSAiYmFyLmgiXG4nCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiYS5oIlxuJywgIyBTaG91bGQgc3RpbGwgZmxh
ZyB0aGlzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWxwaGFi
ZXRpY2FsIHNvcnRpbmcgcHJvYmxlbS4gIFtidWlsZC9pbmNsdWRlX29yZGVyXSBbNF0nKQotCi0g
ICAgICAgICMgQ2hlY2sgdGhhdCBhZnRlciBhbiBhbHJlYWR5IGluY2x1ZGVkIGVycm9yLCB0aGUg
c29ydGluZyBydWxlcyBzdGlsbCB3b3JrLgotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9y
dWxlc19jaGVjaygnZm9vLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjaW5jbHVkZSAiY29uZmlnLmgiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiZm9vLmgiXG4nCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyNpbmNsdWRlICJmb28uaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJnLmgiXG4nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnImZvby5oIiBhbHJlYWR5IGluY2x1ZGVkIGF0IGZvby5j
cHA6MSAgW2J1aWxkL2luY2x1ZGVdIFs0XScpCi0KLSAgICBkZWYgdGVzdF9jaGVja193dGZfaW5j
bHVkZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdm
b28uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNs
dWRlICJjb25maWcuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJyNpbmNsdWRlICJmb28uaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNf
Y2hlY2soJ2Zvby5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnI2luY2x1ZGUgImNvbmZpZy5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnI2luY2x1ZGUgImZvby5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjaW5jbHVkZSAid3RmL0Fzc2VydGlvbnMuaCJcbicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd3dGYgaW5jbHVkZXMgc2hvdWxkIGJlIDx3dGYvZmls
ZS5oPiBpbnN0ZWFkIG9mICJ3dGYvZmlsZS5oIi4nCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcgIFtidWlsZC9pbmNsdWRlXSBbNF0nKQotCi0gICAgZGVmIHRlc3Rf
Y2xhc3NpZnlfaW5jbHVkZShzZWxmKToKLSAgICAgICAgY2xhc3NpZnlfaW5jbHVkZSA9IGNwcF9z
dHlsZS5fY2xhc3NpZnlfaW5jbHVkZQotICAgICAgICBpbmNsdWRlX3N0YXRlID0gY3BwX3N0eWxl
Ll9JbmNsdWRlU3RhdGUoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNwcF9zdHlsZS5fQ09O
RklHX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2lmeV9pbmNsdWRlKCdm
b28vZm9vLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
Y29uZmlnLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFs
c2UsIGluY2x1ZGVfc3RhdGUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNwcF9zdHlsZS5f
UFJJTUFSWV9IRUFERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVk
ZSgnZm9vL2ludGVybmFsL2Zvby5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2Zvby9wdWJsaWMvZm9vLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmFsc2UsIGluY2x1ZGVfc3RhdGUpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNwcF9zdHlsZS5fUFJJTUFSWV9IRUFERVIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgY2xhc3NpZnlfaW5jbHVkZSgnZm9vL2ludGVybmFsL2Zvby5jcHAnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvby9vdGhlci9wdWJsaWMvZm9vLmgn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UsIGluY2x1
ZGVfc3RhdGUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNwcF9zdHlsZS5fT1RIRVJfSEVB
REVSLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZ5X2luY2x1ZGUoJ2Zvby9pbnRl
cm5hbC9mb28uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdmb28vb3RoZXIvcHVibGljL2Zvb3AuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGYWxzZSwgaW5jbHVkZV9zdGF0ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY3BwX3N0eWxlLl9PVEhFUl9IRUFERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
Y2xhc3NpZnlfaW5jbHVkZSgnZm9vL2Zvby5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUcnVlLCBpbmNsdWRlX3N0YXRlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjcHBfc3R5bGUuX1BSSU1BUllfSEVBREVSLAotICAgICAgICAgICAgICAgICAgICAgICAg
IGNsYXNzaWZ5X2luY2x1ZGUoJ2Zvb0N1c3RvbS5jcHAnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2Zvby5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZhbHNlLCBpbmNsdWRlX3N0YXRlKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjcHBfc3R5bGUuX1BSSU1BUllfSEVBREVSLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsYXNzaWZ5X2luY2x1ZGUoJ1ByZWZpeEZvb0N1c3RvbS5jcHAnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Zvby5oJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlLCBpbmNsdWRlX3N0YXRlKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjcHBfc3R5bGUuX01PQ19IRUFERVIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZSgnZm9vLmNwcCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnZm9vLm1vYycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGYWxzZSwgaW5jbHVkZV9zdGF0ZSkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY3BwX3N0eWxlLl9NT0NfSEVBREVSLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsYXNzaWZ5X2luY2x1ZGUoJ2Zvby5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ21vY19mb28uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZhbHNlLCBpbmNsdWRlX3N0YXRlKSkKLSAgICAgICAgIyBUcmlj
a3kgZXhhbXBsZSB3aGVyZSBib3RoIGluY2x1ZGVzIG1pZ2h0IGJlIGNsYXNzaWZpZWQgYXMgcHJp
bWFyeS4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ1Njcm9sbGJh
clRoZW1lV2luY2UuY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJyNpbmNsdWRlICJjb25maWcuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZVdpbmNlLmgiXG4nCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJTY3JvbGxiYXIuaCJcbicsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFz
c2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnU2Nyb2xsYmFyVGhlbWVXaW5jZS5jcHAnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImNvbmZpZy5o
IlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUg
IlNjcm9sbGJhci5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVk
ZSAiU2Nyb2xsYmFyVGhlbWVXaW5jZS5oIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0ZvdW5kIGhlYWRlciB0aGlzIGZpbGUgaW1wbGVtZW50cyBhZnRlciBh
IGhlYWRlciB0aGlzIGZpbGUgaW1wbGVtZW50cy4nCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcgU2hvdWxkIGJlOiBjb25maWcuaCwgcHJpbWFyeSBoZWFkZXIsIGJs
YW5rIGxpbmUsIGFuZCB0aGVuIGFscGhhYmV0aWNhbGx5IHNvcnRlZC4nCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtidWlsZC9pbmNsdWRlX29yZGVyXSBbNF0n
KQotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnUmVzb3VyY2VIYW5k
bGVXaW4uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNp
bmNsdWRlICJjb25maWcuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIlxuJwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICcjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVXaW4uaCJcbicsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRlc3RfdHJ5
X2Ryb3BfY29tbW9uX3N1ZmZpeGVzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdm
b28vZm9vJywgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvby1pbmwuaCcp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28vYmFyL2ZvbycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Jhci9mb29f
aW5sLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vL2ZvbycsIGNwcF9zdHlsZS5f
ZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9mb28uY3BwJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2Zvby9mb29fdW51c3VhbGludGVybmFsJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBjcHBfc3R5bGUuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vZm9vX3VudXN1YWxpbnRlcm5h
bC5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygnX3Rlc3QuY3BwJykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Rlc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNw
cF9zdHlsZS5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ3Rlc3QuY3BwJykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ3Rlc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5f
ZHJvcF9jb21tb25fc3VmZml4ZXMoJ3Rlc3QuY3BwJykpCi0KLWNsYXNzIENoZWNrRm9yRnVuY3Rp
b25MZW5ndGhzVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0g
ICAgICAgICMgUmVkdWNpbmcgdGhlc2UgdGhyZXNob2xkcyBmb3IgdGhlIHRlc3RzIHNwZWVkcyB1
cCB0ZXN0cyBzaWduaWZpY2FudGx5LgotICAgICAgICBzZWxmLm9sZF9ub3JtYWxfdHJpZ2dlciA9
IGNwcF9zdHlsZS5fRnVuY3Rpb25TdGF0ZS5fTk9STUFMX1RSSUdHRVIKLSAgICAgICAgc2VsZi5v
bGRfdGVzdF90cmlnZ2VyID0gY3BwX3N0eWxlLl9GdW5jdGlvblN0YXRlLl9URVNUX1RSSUdHRVIK
LQotICAgICAgICBjcHBfc3R5bGUuX0Z1bmN0aW9uU3RhdGUuX05PUk1BTF9UUklHR0VSID0gMTAK
LSAgICAgICAgY3BwX3N0eWxlLl9GdW5jdGlvblN0YXRlLl9URVNUX1RSSUdHRVIgPSAyNQotCi0g
ICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBjcHBfc3R5bGUuX0Z1bmN0aW9uU3RhdGUu
X05PUk1BTF9UUklHR0VSID0gc2VsZi5vbGRfbm9ybWFsX3RyaWdnZXIKLSAgICAgICAgY3BwX3N0
eWxlLl9GdW5jdGlvblN0YXRlLl9URVNUX1RSSUdHRVIgPSBzZWxmLm9sZF90ZXN0X3RyaWdnZXIK
LQotICAgICMgRklYTUU6IEVsaW1pbmF0ZSB0aGUgbmVlZCBmb3IgdGhpcyBmdW5jdGlvbi4KLSAg
ICBkZWYgc2V0X21pbl9jb25maWRlbmNlKHNlbGYsIG1pbl9jb25maWRlbmNlKToKLSAgICAgICAg
IiIiU2V0IG5ldyB0ZXN0IGNvbmZpZGVuY2UgYW5kIHJldHVybiBvbGQgdGVzdCBjb25maWRlbmNl
LiIiIgotICAgICAgICBvbGRfbWluX2NvbmZpZGVuY2UgPSBzZWxmLm1pbl9jb25maWRlbmNlCi0g
ICAgICAgIHNlbGYubWluX2NvbmZpZGVuY2UgPSBtaW5fY29uZmlkZW5jZQotICAgICAgICByZXR1
cm4gb2xkX21pbl9jb25maWRlbmNlCi0KLSAgICBkZWYgYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNf
Y2hlY2soc2VsZiwgY29kZSwgZXhwZWN0ZWRfbWVzc2FnZSk6Ci0gICAgICAgICIiIkNoZWNrIHdh
cm5pbmdzIGZvciBsb25nIGZ1bmN0aW9uIGJvZGllcyBhcmUgYXMgZXhwZWN0ZWQuCi0KLSAgICAg
ICAgQXJnczoKLSAgICAgICAgICBjb2RlOiBDKysgc291cmNlIGNvZGUgZXhwZWN0ZWQgdG8gZ2Vu
ZXJhdGUgYSB3YXJuaW5nIG1lc3NhZ2UuCi0gICAgICAgICAgZXhwZWN0ZWRfbWVzc2FnZTogTWVz
c2FnZSBleHBlY3RlZCB0byBiZSBnZW5lcmF0ZWQgYnkgdGhlIEMrKyBjb2RlLgotICAgICAgICAi
IiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5wZXJmb3JtX2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soY29k
ZSkpCi0KLSAgICBkZWYgdHJpZ2dlcl9saW5lcyhzZWxmLCBlcnJvcl9sZXZlbCk6Ci0gICAgICAg
ICIiIlJldHVybiBudW1iZXIgb2YgbGluZXMgbmVlZGVkIHRvIHRyaWdnZXIgYSBmdW5jdGlvbiBs
ZW5ndGggd2FybmluZy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIGVycm9yX2xldmVsOiAt
LXYgc2V0dGluZyBmb3IgY3BwX3N0eWxlLgotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAg
TnVtYmVyIG9mIGxpbmVzIG5lZWRlZCB0byB0cmlnZ2VyIGEgZnVuY3Rpb24gbGVuZ3RoIHdhcm5p
bmcuCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gY3BwX3N0eWxlLl9GdW5jdGlvblN0YXRl
Ll9OT1JNQUxfVFJJR0dFUiAqIDIgKiogZXJyb3JfbGV2ZWwKLQotICAgIGRlZiB0cmlnZ2VyX3Rl
c3RfbGluZXMoc2VsZiwgZXJyb3JfbGV2ZWwpOgotICAgICAgICAiIiJSZXR1cm4gbnVtYmVyIG9m
IGxpbmVzIG5lZWRlZCB0byB0cmlnZ2VyIGEgdGVzdCBmdW5jdGlvbiBsZW5ndGggd2FybmluZy4K
LQotICAgICAgICBBcmdzOgotICAgICAgICAgIGVycm9yX2xldmVsOiAtLXYgc2V0dGluZyBmb3Ig
Y3BwX3N0eWxlLgotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgTnVtYmVyIG9mIGxpbmVz
IG5lZWRlZCB0byB0cmlnZ2VyIGEgdGVzdCBmdW5jdGlvbiBsZW5ndGggd2FybmluZy4KLSAgICAg
ICAgIiIiCi0gICAgICAgIHJldHVybiBjcHBfc3R5bGUuX0Z1bmN0aW9uU3RhdGUuX1RFU1RfVFJJ
R0dFUiAqIDIgKiogZXJyb3JfbGV2ZWwKLQotICAgIGRlZiBhc3NlcnRfZnVuY3Rpb25fbGVuZ3Ro
X2NoZWNrX2RlZmluaXRpb24oc2VsZiwgbGluZXMsIGVycm9yX2xldmVsKToKLSAgICAgICAgIiIi
R2VuZXJhdGUgbG9uZyBmdW5jdGlvbiBkZWZpbml0aW9uIGFuZCBjaGVjayB3YXJuaW5ncyBhcmUg
YXMgZXhwZWN0ZWQuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBsaW5lczogTnVtYmVyIG9m
IGxpbmVzIHRvIGdlbmVyYXRlLgotICAgICAgICAgIGVycm9yX2xldmVsOiAgLS12IHNldHRpbmcg
Zm9yIGNwcF9zdHlsZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyaWdnZXJfbGV2ZWwgPSBzZWxm
LnRyaWdnZXJfbGluZXMoc2VsZi5taW5fY29uZmlkZW5jZSkKLSAgICAgICAgc2VsZi5hc3NlcnRf
ZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAgICd2b2lkIHRlc3QoaW50IHgpJyAr
IHNlbGYuZnVuY3Rpb25fYm9keShsaW5lcyksCi0gICAgICAgICAgICAoJ1NtYWxsIGFuZCBmb2N1
c2VkIGZ1bmN0aW9ucyBhcmUgcHJlZmVycmVkOiAnCi0gICAgICAgICAgICAgJ3Rlc3QoKSBoYXMg
JWQgbm9uLWNvbW1lbnQgbGluZXMgJwotICAgICAgICAgICAgICcoZXJyb3IgdHJpZ2dlcmVkIGJ5
IGV4Y2VlZGluZyAlZCBsaW5lcykuJwotICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9mbl9z
aXplXSBbJWRdJwotICAgICAgICAgICAgICUgKGxpbmVzLCB0cmlnZ2VyX2xldmVsLCBlcnJvcl9s
ZXZlbCkpKQotCi0gICAgZGVmIGFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlv
bl9vayhzZWxmLCBsaW5lcyk6Ci0gICAgICAgICIiIkdlbmVyYXRlIHNob3J0ZXIgZnVuY3Rpb24g
ZGVmaW5pdGlvbiBhbmQgY2hlY2sgbm8gd2FybmluZyBpcyBwcm9kdWNlZC4KLQotICAgICAgICBB
cmdzOgotICAgICAgICAgIGxpbmVzOiBOdW1iZXIgb2YgbGluZXMgdG8gZ2VuZXJhdGUuCi0gICAg
ICAgICIiIgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAotICAg
ICAgICAgICAgJ3ZvaWQgdGVzdChpbnQgeCknICsgc2VsZi5mdW5jdGlvbl9ib2R5KGxpbmVzKSwK
LSAgICAgICAgICAgICcnKQotCi0gICAgZGVmIGFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tf
YXRfZXJyb3JfbGV2ZWwoc2VsZiwgZXJyb3JfbGV2ZWwpOgotICAgICAgICAiIiJHZW5lcmF0ZSBh
bmQgY2hlY2sgZnVuY3Rpb24gYXQgdGhlIHRyaWdnZXIgbGV2ZWwgZm9yIC0tdiBzZXR0aW5nLgot
Ci0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZXJyb3JfbGV2ZWw6IC0tdiBzZXR0aW5nIGZvciBj
cHBfc3R5bGUuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5n
dGhfY2hlY2tfZGVmaW5pdGlvbihzZWxmLnRyaWdnZXJfbGluZXMoZXJyb3JfbGV2ZWwpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9s
ZXZlbCkKLQotICAgIGRlZiBhc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2JlbG93X2Vycm9y
X2xldmVsKHNlbGYsIGVycm9yX2xldmVsKToKLSAgICAgICAgIiIiR2VuZXJhdGUgYW5kIGNoZWNr
IGZ1bmN0aW9uIGp1c3QgYmVsb3cgdGhlIHRyaWdnZXIgbGV2ZWwgZm9yIC0tdiBzZXR0aW5nLgot
Ci0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZXJyb3JfbGV2ZWw6IC0tdiBzZXR0aW5nIGZvciBj
cHBfc3R5bGUuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5n
dGhfY2hlY2tfZGVmaW5pdGlvbihzZWxmLnRyaWdnZXJfbGluZXMoZXJyb3JfbGV2ZWwpIC0gMSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJy
b3JfbGV2ZWwgLSAxKQotCi0gICAgZGVmIGFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYWJv
dmVfZXJyb3JfbGV2ZWwoc2VsZiwgZXJyb3JfbGV2ZWwpOgotICAgICAgICAiIiJHZW5lcmF0ZSBh
bmQgY2hlY2sgZnVuY3Rpb24ganVzdCBhYm92ZSB0aGUgdHJpZ2dlciBsZXZlbCBmb3IgLS12IHNl
dHRpbmcuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBlcnJvcl9sZXZlbDogLS12IHNldHRp
bmcgZm9yIGNwcF9zdHlsZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0
aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uKHNlbGYudHJpZ2dlcl9saW5lcyhlcnJvcl9sZXZl
bCkgKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvcl9sZXZlbCkKLQotICAgIGRlZiBmdW5jdGlvbl9ib2R5KHNlbGYsIG51bWJlcl9v
Zl9saW5lcyk6Ci0gICAgICAgIHJldHVybiAnIHtcbicgKyAnICAgIHRoaXNfaXNfanVzdF9hX3Rl
c3QoKTtcbicgKiBudW1iZXJfb2ZfbGluZXMgKyAnfScKLQotICAgIGRlZiBmdW5jdGlvbl9ib2R5
X3dpdGhfYmxhbmtfbGluZXMoc2VsZiwgbnVtYmVyX29mX2xpbmVzKToKLSAgICAgICAgcmV0dXJu
ICcge1xuJyArICcgICAgdGhpc19pc19qdXN0X2FfdGVzdCgpO1xuXG4nICogbnVtYmVyX29mX2xp
bmVzICsgJ30nCi0KLSAgICBkZWYgZnVuY3Rpb25fYm9keV93aXRoX25vX2xpbnRzKHNlbGYsIG51
bWJlcl9vZl9saW5lcyk6Ci0gICAgICAgIHJldHVybiAnIHtcbicgKyAnICAgIHRoaXNfaXNfanVz
dF9hX3Rlc3QoKTsgIC8vIE5PTElOVFxuJyAqIG51bWJlcl9vZl9saW5lcyArICd9JwotCi0gICAg
IyBUZXN0IGxpbmUgbGVuZ3RoIGNoZWNrcy4KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhf
Y2hlY2tfZGVjbGFyYXRpb24oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xl
bmd0aHNfY2hlY2soCi0gICAgICAgICAgICAndm9pZCB0ZXN0KCk7JywgICMgTm90IGEgZnVuY3Rp
b24gZGVmaW5pdGlvbgotICAgICAgICAgICAgJycpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9s
ZW5ndGhfY2hlY2tfZGVjbGFyYXRpb25fd2l0aF9ibG9ja19mb2xsb3dpbmcoc2VsZik6Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCi0gICAgICAgICAgICAoJ3Zv
aWQgdGVzdCgpO1xuJwotICAgICAgICAgICAgICsgc2VsZi5mdW5jdGlvbl9ib2R5KDY2KSksICAj
IE5vdCBhIGZ1bmN0aW9uIGRlZmluaXRpb24KLSAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRl
c3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2NsYXNzX2RlZmluaXRpb24oc2VsZik6Ci0gICAgICAg
IHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soICAjIE5vdCBhIGZ1bmN0aW9uIGRl
ZmluaXRpb24KLSAgICAgICAgICAgICdjbGFzcyBUZXN0JyArIHNlbGYuZnVuY3Rpb25fYm9keSg2
NikgKyAnOycsCi0gICAgICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0
aF9jaGVja190cml2aWFsKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5n
dGhzX2NoZWNrKAotICAgICAgICAgICAgJ3ZvaWQgdGVzdCgpIHt9JywgICMgTm90IGNvdW50ZWQK
LSAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2Vt
cHR5KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAot
ICAgICAgICAgICAgJ3ZvaWQgdGVzdCgpIHtcbn0nLAotICAgICAgICAgICAgJycpCi0KLSAgICBk
ZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9iZWxvd19zZXZlcml0eTAo
c2VsZik6Ci0gICAgICAgIG9sZF9taW5fY29uZmlkZW5jZSA9IHNlbGYuc2V0X21pbl9jb25maWRl
bmNlKDApCi0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0
aW9uX29rKHNlbGYudHJpZ2dlcl9saW5lcygwKSAtIDEpCi0gICAgICAgIHNlbGYuc2V0X21pbl9j
b25maWRlbmNlKG9sZF9taW5fY29uZmlkZW5jZSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xl
bmd0aF9jaGVja19kZWZpbml0aW9uX2F0X3NldmVyaXR5MChzZWxmKToKLSAgICAgICAgb2xkX21p
bl9jb25maWRlbmNlID0gc2VsZi5zZXRfbWluX2NvbmZpZGVuY2UoMCkKLSAgICAgICAgc2VsZi5h
c3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fb2soc2VsZi50cmlnZ2VyX2xp
bmVzKDApKQotICAgICAgICBzZWxmLnNldF9taW5fY29uZmlkZW5jZShvbGRfbWluX2NvbmZpZGVu
Y2UpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9hYm92
ZV9zZXZlcml0eTAoc2VsZik6Ci0gICAgICAgIG9sZF9taW5fY29uZmlkZW5jZSA9IHNlbGYuc2V0
X21pbl9jb25maWRlbmNlKDApCi0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9j
aGVja19hYm92ZV9lcnJvcl9sZXZlbCgwKQotICAgICAgICBzZWxmLnNldF9taW5fY29uZmlkZW5j
ZShvbGRfbWluX2NvbmZpZGVuY2UpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hl
Y2tfZGVmaW5pdGlvbl9iZWxvd19zZXZlcml0eTF2MChzZWxmKToKLSAgICAgICAgb2xkX21pbl9j
b25maWRlbmNlID0gc2VsZi5zZXRfbWluX2NvbmZpZGVuY2UoMCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2JlbG93X2Vycm9yX2xldmVsKDEpCi0gICAgICAgIHNl
bGYuc2V0X21pbl9jb25maWRlbmNlKG9sZF9taW5fY29uZmlkZW5jZSkKLQotICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2F0X3NldmVyaXR5MXYwKHNlbGYpOgot
ICAgICAgICBvbGRfbWluX2NvbmZpZGVuY2UgPSBzZWxmLnNldF9taW5fY29uZmlkZW5jZSgwKQot
ICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYXRfZXJyb3JfbGV2ZWwo
MSkKLSAgICAgICAgc2VsZi5zZXRfbWluX2NvbmZpZGVuY2Uob2xkX21pbl9jb25maWRlbmNlKQot
Ci0gICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYmVsb3dfc2V2
ZXJpdHkxKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tf
ZGVmaW5pdGlvbl9vayhzZWxmLnRyaWdnZXJfbGluZXMoMSkgLSAxKQotCi0gICAgZGVmIHRlc3Rf
ZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYXRfc2V2ZXJpdHkxKHNlbGYpOgotICAg
ICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9vayhzZWxm
LnRyaWdnZXJfbGluZXMoMSkpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tf
ZGVmaW5pdGlvbl9hYm92ZV9zZXZlcml0eTEoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1
bmN0aW9uX2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbCgxKQotCi0gICAgZGVmIHRlc3Rf
ZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fc2V2ZXJpdHkxX3BsdXNfYmxhbmtzKHNl
bGYpOgotICAgICAgICBlcnJvcl9sZXZlbCA9IDEKLSAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxm
LnRyaWdnZXJfbGluZXMoZXJyb3JfbGV2ZWwpICsgMQotICAgICAgICB0cmlnZ2VyX2xldmVsID0g
c2VsZi50cmlnZ2VyX2xpbmVzKHNlbGYubWluX2NvbmZpZGVuY2UpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCi0gICAgICAgICAgICAndm9pZCB0ZXN0X2JsYW5r
cyhpbnQgeCknICsgc2VsZi5mdW5jdGlvbl9ib2R5KGVycm9yX2xpbmVzKSwKLSAgICAgICAgICAg
ICgnU21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcKLSAgICAgICAg
ICAgICAndGVzdF9ibGFua3MoKSBoYXMgJWQgbm9uLWNvbW1lbnQgbGluZXMgJwotICAgICAgICAg
ICAgICcoZXJyb3IgdHJpZ2dlcmVkIGJ5IGV4Y2VlZGluZyAlZCBsaW5lcykuJwotICAgICAgICAg
ICAgICcgIFtyZWFkYWJpbGl0eS9mbl9zaXplXSBbJWRdJykKLSAgICAgICAgICAgICUgKGVycm9y
X2xpbmVzLCB0cmlnZ2VyX2xldmVsLCBlcnJvcl9sZXZlbCkpCi0KLSAgICBkZWYgdGVzdF9mdW5j
dGlvbl9sZW5ndGhfY2hlY2tfY29tcGxleF9kZWZpbml0aW9uX3NldmVyaXR5MShzZWxmKToKLSAg
ICAgICAgZXJyb3JfbGV2ZWwgPSAxCi0gICAgICAgIGVycm9yX2xpbmVzID0gc2VsZi50cmlnZ2Vy
X2xpbmVzKGVycm9yX2xldmVsKSArIDEKLSAgICAgICAgdHJpZ2dlcl9sZXZlbCA9IHNlbGYudHJp
Z2dlcl9saW5lcyhzZWxmLm1pbl9jb25maWRlbmNlKQotICAgICAgICBzZWxmLmFzc2VydF9mdW5j
dGlvbl9sZW5ndGhzX2NoZWNrKAotICAgICAgICAgICAgKCdteV9uYW1lc3BhY2U6Om15X290aGVy
X25hbWVzcGFjZTo6TXlWZXJ5TG9uZ1R5cGVOYW1lKlxuJwotICAgICAgICAgICAgICdteV9uYW1l
c3BhY2U6Om15X290aGVyX25hbWVzcGFjZTo6TXlGdW5jdGlvbihpbnQgYXJnMSwgY2hhciogYXJn
MiknCi0gICAgICAgICAgICAgKyBzZWxmLmZ1bmN0aW9uX2JvZHkoZXJyb3JfbGluZXMpKSwKLSAg
ICAgICAgICAgICgnU21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcK
LSAgICAgICAgICAgICAnbXlfbmFtZXNwYWNlOjpteV9vdGhlcl9uYW1lc3BhY2U6Ok15RnVuY3Rp
b24oKScKLSAgICAgICAgICAgICAnIGhhcyAlZCBub24tY29tbWVudCBsaW5lcyAnCi0gICAgICAg
ICAgICAgJyhlcnJvciB0cmlnZ2VyZWQgYnkgZXhjZWVkaW5nICVkIGxpbmVzKS4nCi0gICAgICAg
ICAgICAgJyAgW3JlYWRhYmlsaXR5L2ZuX3NpemVdIFslZF0nKQotICAgICAgICAgICAgJSAoZXJy
b3JfbGluZXMsIHRyaWdnZXJfbGV2ZWwsIGVycm9yX2xldmVsKSkKLQotICAgIGRlZiB0ZXN0X2Z1
bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX3NldmVyaXR5MV9mb3JfdGVzdChzZWxmKToK
LSAgICAgICAgZXJyb3JfbGV2ZWwgPSAxCi0gICAgICAgIGVycm9yX2xpbmVzID0gc2VsZi50cmln
Z2VyX3Rlc3RfbGluZXMoZXJyb3JfbGV2ZWwpICsgMQotICAgICAgICB0cmlnZ2VyX2xldmVsID0g
c2VsZi50cmlnZ2VyX3Rlc3RfbGluZXMoc2VsZi5taW5fY29uZmlkZW5jZSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAgICdURVNUX0YoVGVz
dCwgTXV0YXRvciknICsgc2VsZi5mdW5jdGlvbl9ib2R5KGVycm9yX2xpbmVzKSwKLSAgICAgICAg
ICAgICgnU21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcKLSAgICAg
ICAgICAgICAnVEVTVF9GKFRlc3QsIE11dGF0b3IpIGhhcyAlZCBub24tY29tbWVudCBsaW5lcyAn
Ci0gICAgICAgICAgICAgJyhlcnJvciB0cmlnZ2VyZWQgYnkgZXhjZWVkaW5nICVkIGxpbmVzKS4n
Ci0gICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2ZuX3NpemVdIFslZF0nKQotICAgICAgICAg
ICAgJSAoZXJyb3JfbGluZXMsIHRyaWdnZXJfbGV2ZWwsIGVycm9yX2xldmVsKSkKLQotICAgIGRl
ZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX3NldmVyaXR5MV9mb3Jfc3Bs
aXRfbGluZV90ZXN0KHNlbGYpOgotICAgICAgICBlcnJvcl9sZXZlbCA9IDEKLSAgICAgICAgZXJy
b3JfbGluZXMgPSBzZWxmLnRyaWdnZXJfdGVzdF9saW5lcyhlcnJvcl9sZXZlbCkgKyAxCi0gICAg
ICAgIHRyaWdnZXJfbGV2ZWwgPSBzZWxmLnRyaWdnZXJfdGVzdF9saW5lcyhzZWxmLm1pbl9jb25m
aWRlbmNlKQotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAotICAg
ICAgICAgICAgKCdURVNUX0YoR29vZ2xlVXBkYXRlUmVjb3ZlcnlSZWdpc3RyeVByb3RlY3RlZFRl
c3QsXG4nCi0gICAgICAgICAgICAgJyAgICBGaXhHb29nbGVVcGRhdGVfQWxsVmFsdWVzX01hY2hp
bmVBcHApJyAgIyBub3RlOiA0IHNwYWNlcwotICAgICAgICAgICAgICsgc2VsZi5mdW5jdGlvbl9i
b2R5KGVycm9yX2xpbmVzKSksCi0gICAgICAgICAgICAoJ1NtYWxsIGFuZCBmb2N1c2VkIGZ1bmN0
aW9ucyBhcmUgcHJlZmVycmVkOiAnCi0gICAgICAgICAgICAgJ1RFU1RfRihHb29nbGVVcGRhdGVS
ZWNvdmVyeVJlZ2lzdHJ5UHJvdGVjdGVkVGVzdCwgJyAgIyAxIHNwYWNlCi0gICAgICAgICAgICAg
J0ZpeEdvb2dsZVVwZGF0ZV9BbGxWYWx1ZXNfTWFjaGluZUFwcCkgaGFzICVkIG5vbi1jb21tZW50
IGxpbmVzICcKLSAgICAgICAgICAgICAnKGVycm9yIHRyaWdnZXJlZCBieSBleGNlZWRpbmcgJWQg
bGluZXMpLicKLSAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvZm5fc2l6ZV0gWyVkXScpCi0g
ICAgICAgICAgICAlIChlcnJvcl9saW5lcysxLCB0cmlnZ2VyX2xldmVsLCBlcnJvcl9sZXZlbCkp
Ci0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0
eTFfZm9yX2JhZF90ZXN0X2RvZXNudF9icmVhayhzZWxmKToKLSAgICAgICAgZXJyb3JfbGV2ZWwg
PSAxCi0gICAgICAgIGVycm9yX2xpbmVzID0gc2VsZi50cmlnZ2VyX3Rlc3RfbGluZXMoZXJyb3Jf
bGV2ZWwpICsgMQotICAgICAgICB0cmlnZ2VyX2xldmVsID0gc2VsZi50cmlnZ2VyX3Rlc3RfbGlu
ZXMoc2VsZi5taW5fY29uZmlkZW5jZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVu
Z3Roc19jaGVjaygKLSAgICAgICAgICAgICgnVEVTVF9GKCcKLSAgICAgICAgICAgICArIHNlbGYu
ZnVuY3Rpb25fYm9keShlcnJvcl9saW5lcykpLAotICAgICAgICAgICAgKCdTbWFsbCBhbmQgZm9j
dXNlZCBmdW5jdGlvbnMgYXJlIHByZWZlcnJlZDogJwotICAgICAgICAgICAgICdURVNUX0YgaGFz
ICVkIG5vbi1jb21tZW50IGxpbmVzICcKLSAgICAgICAgICAgICAnKGVycm9yIHRyaWdnZXJlZCBi
eSBleGNlZWRpbmcgJWQgbGluZXMpLicKLSAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvZm5f
c2l6ZV0gWyVkXScpCi0gICAgICAgICAgICAlIChlcnJvcl9saW5lcywgdHJpZ2dlcl9sZXZlbCwg
ZXJyb3JfbGV2ZWwpKQotCi0gICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmlu
aXRpb25fc2V2ZXJpdHkxX3dpdGhfZW1iZWRkZWRfbm9fbGludHMoc2VsZik6Ci0gICAgICAgIGVy
cm9yX2xldmVsID0gMQotICAgICAgICBlcnJvcl9saW5lcyA9IHNlbGYudHJpZ2dlcl9saW5lcyhl
cnJvcl9sZXZlbCkgKyAxCi0gICAgICAgIHRyaWdnZXJfbGV2ZWwgPSBzZWxmLnRyaWdnZXJfbGlu
ZXMoc2VsZi5taW5fY29uZmlkZW5jZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVu
Z3Roc19jaGVjaygKLSAgICAgICAgICAgICd2b2lkIHRlc3QoaW50IHgpJyArIHNlbGYuZnVuY3Rp
b25fYm9keV93aXRoX25vX2xpbnRzKGVycm9yX2xpbmVzKSwKLSAgICAgICAgICAgICgnU21hbGwg
YW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcKLSAgICAgICAgICAgICAndGVz
dCgpIGhhcyAlZCBub24tY29tbWVudCBsaW5lcyAnCi0gICAgICAgICAgICAgJyhlcnJvciB0cmln
Z2VyZWQgYnkgZXhjZWVkaW5nICVkIGxpbmVzKS4nCi0gICAgICAgICAgICAgJyAgW3JlYWRhYmls
aXR5L2ZuX3NpemVdIFslZF0nKQotICAgICAgICAgICAgJSAoZXJyb3JfbGluZXMsIHRyaWdnZXJf
bGV2ZWwsIGVycm9yX2xldmVsKSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVj
a19kZWZpbml0aW9uX3NldmVyaXR5MV93aXRoX25vX2xpbnQoc2VsZik6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCi0gICAgICAgICAgICAoJ3ZvaWQgdGVzdChp
bnQgeCknICsgc2VsZi5mdW5jdGlvbl9ib2R5KHNlbGYudHJpZ2dlcl9saW5lcygxKSkKLSAgICAg
ICAgICAgICArICcgIC8vIE5PTElOVCAtLSBsb25nIGZ1bmN0aW9uJyksCi0gICAgICAgICAgICAn
JykKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2JlbG93
X3NldmVyaXR5MihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2No
ZWNrX2JlbG93X2Vycm9yX2xldmVsKDIpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhf
Y2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0eTIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1
bmN0aW9uX2xlbmd0aF9jaGVja19hdF9lcnJvcl9sZXZlbCgyKQotCi0gICAgZGVmIHRlc3RfZnVu
Y3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYWJvdmVfc2V2ZXJpdHkyKHNlbGYpOgotICAg
ICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYWJvdmVfZXJyb3JfbGV2ZWwo
MikKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2JlbG93
X3NldmVyaXR5MyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2No
ZWNrX2JlbG93X2Vycm9yX2xldmVsKDMpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhf
Y2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0eTMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1
bmN0aW9uX2xlbmd0aF9jaGVja19hdF9lcnJvcl9sZXZlbCgzKQotCi0gICAgZGVmIHRlc3RfZnVu
Y3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYWJvdmVfc2V2ZXJpdHkzKHNlbGYpOgotICAg
ICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYWJvdmVfZXJyb3JfbGV2ZWwo
MykKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2JlbG93
X3NldmVyaXR5NChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2No
ZWNrX2JlbG93X2Vycm9yX2xldmVsKDQpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhf
Y2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0eTQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1
bmN0aW9uX2xlbmd0aF9jaGVja19hdF9lcnJvcl9sZXZlbCg0KQotCi0gICAgZGVmIHRlc3RfZnVu
Y3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYWJvdmVfc2V2ZXJpdHk0KHNlbGYpOgotICAg
ICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYWJvdmVfZXJyb3JfbGV2ZWwo
NCkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2JlbG93
X3NldmVyaXR5NShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2No
ZWNrX2JlbG93X2Vycm9yX2xldmVsKDUpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhf
Y2hlY2tfZGVmaW5pdGlvbl9hdF9zZXZlcml0eTUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0
X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hdF9lcnJvcl9sZXZlbCg1KQotCi0gICAgZGVmIHRlc3Rf
ZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYWJvdmVfc2V2ZXJpdHk1KHNlbGYpOgot
ICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYWJvdmVfZXJyb3JfbGV2
ZWwoNSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2h1
Z2VfbGluZXMoc2VsZik6Ci0gICAgICAgICMgNSBpcyB0aGUgbGltaXQKLSAgICAgICAgc2VsZi5h
c3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb24oc2VsZi50cmlnZ2VyX2xpbmVz
KDEwKSwgNSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9ub3RfZGV0ZXJtaW5hYmxl
KHNlbGYpOgotICAgICAgICAjIE1hY3JvIGludm9jYXRpb24gd2l0aG91dCB0ZXJtaW5hdGluZyBz
ZW1pY29sb24uCi0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCi0g
ICAgICAgICAgICAnTUFDUk8oYXJnKScsCi0gICAgICAgICAgICAnJykKLQotICAgICAgICAjIE1h
Y3JvIHdpdGggdW5kZXJzY29yZXMKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Ro
c19jaGVjaygKLSAgICAgICAgICAgICdNQUNST19XSVRIX1VOREVSU0NPUkVTKGFyZzEsIGFyZzIs
IGFyZzMpJywKLSAgICAgICAgICAgICcnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9u
X2xlbmd0aHNfY2hlY2soCi0gICAgICAgICAgICAnTm9uTWFjcm8oYXJnKScsCi0gICAgICAgICAg
ICAnTGludCBmYWlsZWQgdG8gZmluZCBzdGFydCBvZiBmdW5jdGlvbiBib2R5LicKLSAgICAgICAg
ICAgICcgIFtyZWFkYWJpbGl0eS9mbl9zaXplXSBbNV0nKQotCi0KLWNsYXNzIE5vTm9uVmlydHVh
bERlc3RydWN0b3JzVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKLQotICAgIGRlZiB0ZXN0X25vX2Vy
cm9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAg
ICAgICAnJydjbGFzcyBGb28gewotICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgfkZvbygpOwot
ICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBmb28oKTsKLSAgICAgICAgICAgICAgIH07
JycnLAotICAgICAgICAgICAgJycpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgICB2aXJ0
dWFsIGlubGluZSB+Rm9vKCk7Ci0gICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygp
OwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnJykKLQotICAgICAgICBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28gewotICAg
ICAgICAgICAgICAgICAgIGlubGluZSB2aXJ0dWFsIH5Gb28oKTsKLSAgICAgICAgICAgICAgICAg
ICB2aXJ0dWFsIHZvaWQgZm9vKCk7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAg
ICcnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAg
ICcnJ2NsYXNzIEZvbzo6R29vIHsKLSAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIH5Hb28oKTsK
LSAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZ29vKCk7Ci0gICAgICAgICAgICAgICB9
OycnJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xp
bnQoCi0gICAgICAgICAgICAnY2xhc3MgRm9vIHsgdm9pZCBmb28oKTsgfTsnLAotICAgICAgICAg
ICAgJ01vcmUgdGhhbiBvbmUgY29tbWFuZCBvbiB0aGUgc2FtZSBsaW5lICBbd2hpdGVzcGFjZS9u
ZXdsaW5lXSBbNF0nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAg
ICAgICAgICAgICcnJ2NsYXNzIFF1YWxpZmllZDo6R29vIDogcHVibGljIEZvbyB7Ci0gICAgICAg
ICAgICAgICAgICAgdmlydHVhbCB2b2lkIGdvbygpOwotICAgICAgICAgICAgICAgfTsnJycsCi0g
ICAgICAgICAgICAnJykKLQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0g
ICAgICAgICAgICAjIExpbmUtZW5kaW5nIDoKLSAgICAgICAgICAgICcnJ2NsYXNzIEdvbyA6Ci0g
ICAgICAgICAgICAgICBwdWJsaWMgRm9vIHsKLSAgICAgICAgICAgICAgICAgICAgdmlydHVhbCB2
b2lkIGdvbygpOwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnTGFiZWxzIHNo
b3VsZCBhbHdheXMgYmUgaW5kZW50ZWQgYXQgbGVhc3Qgb25lIHNwYWNlLiAgSWYgdGhpcyBpcyBh
ICcKLSAgICAgICAgICAgICdtZW1iZXItaW5pdGlhbGl6ZXIgbGlzdCBpbiBhIGNvbnN0cnVjdG9y
LCB0aGUgY29sb24gc2hvdWxkIGJlIG9uIHRoZSAnCi0gICAgICAgICAgICAnbGluZSBhZnRlciB0
aGUgZGVmaW5pdGlvbiBoZWFkZXIuICBbd2hpdGVzcGFjZS9sYWJlbHNdIFs0XScpCi0KLSAgICBk
ZWYgdGVzdF9ub19kZXN0cnVjdG9yX3doZW5fdmlydHVhbF9uZWVkZWQoc2VsZik6Ci0gICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludF9yZSgKLSAgICAgICAgICAgICcnJ2NsYXNzIEZv
byB7Ci0gICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwotICAgICAgICAgICAg
ICAgfTsnJycsCi0gICAgICAgICAgICAnVGhlIGNsYXNzIEZvbyBwcm9iYWJseSBuZWVkcyBhIHZp
cnR1YWwgZGVzdHJ1Y3RvcicpCi0KLSAgICBkZWYgdGVzdF9kZXN0cnVjdG9yX25vbl92aXJ0dWFs
X3doZW5fdmlydHVhbF9uZWVkZWQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludF9yZSgKLSAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAg
ICAgfkZvbygpOwotICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBmb28oKTsKLSAgICAg
ICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJ1RoZSBjbGFzcyBGb28gcHJvYmFibHkgbmVl
ZHMgYSB2aXJ0dWFsIGRlc3RydWN0b3InKQotCi0gICAgZGVmIHRlc3Rfbm9fd2Fybl93aGVuX2Rl
cml2ZWQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAg
ICAgICAgICcnJ2NsYXNzIEZvbyA6IHB1YmxpYyBHb28gewotICAgICAgICAgICAgICAgICAgIHZp
cnR1YWwgdm9pZCBmb28oKTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJycp
Ci0KLSAgICBkZWYgdGVzdF9pbnRlcm5hbF9icmFjZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0X211bHRpX2xpbmVfbGludF9yZSgKLSAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAg
ICAgICAgICAgICAgICAgZW51bSBHb28gewotICAgICAgICAgICAgICAgICAgICAgICBHT08KLSAg
ICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBmb28o
KTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJ1RoZSBjbGFzcyBGb28gcHJv
YmFibHkgbmVlZHMgYSB2aXJ0dWFsIGRlc3RydWN0b3InKQotCi0gICAgZGVmIHRlc3RfaW5uZXJf
Y2xhc3NfbmVlZHNfdmlydHVhbF9kZXN0cnVjdG9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnRfcmUoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28gewotICAgICAg
ICAgICAgICAgICAgIGNsYXNzIEdvbyB7Ci0gICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWwg
dm9pZCBnb28oKTsKLSAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgfTsnJycs
Ci0gICAgICAgICAgICAnVGhlIGNsYXNzIEdvbyBwcm9iYWJseSBuZWVkcyBhIHZpcnR1YWwgZGVz
dHJ1Y3RvcicpCi0KLSAgICBkZWYgdGVzdF9vdXRlcl9jbGFzc19uZWVkc192aXJ0dWFsX2Rlc3Ry
dWN0b3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludF9yZSgKLSAg
ICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAgICAgY2xhc3MgR29vIHsK
LSAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBm
b28oKTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJ1RoZSBjbGFzcyBGb28g
cHJvYmFibHkgbmVlZHMgYSB2aXJ0dWFsIGRlc3RydWN0b3InKQotCi0gICAgZGVmIHRlc3RfcXVh
bGlmaWVkX2NsYXNzX25lZWRzX3ZpcnR1YWxfZGVzdHJ1Y3RvcihzZWxmKToKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50X3JlKAotICAgICAgICAgICAgJycnY2xhc3MgUXVhbGlm
aWVkOjpGb28gewotICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBmb28oKTsKLSAgICAg
ICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJ1RoZSBjbGFzcyBRdWFsaWZpZWQ6OkZvbyBw
cm9iYWJseSBuZWVkcyBhIHZpcnR1YWwgZGVzdHJ1Y3RvcicpCi0KLSAgICBkZWYgdGVzdF9tdWx0
aV9saW5lX2RlY2xhcmF0aW9uX25vX2Vycm9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnRfcmUoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28KLSAgICAgICAgICAg
ICAgICAgICA6IHB1YmxpYyBHb28gewotICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBm
b28oKTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJycpCi0KLSAgICBkZWYg
dGVzdF9tdWx0aV9saW5lX2RlY2xhcmF0aW9uX3dpdGhfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2NsYXNzIEZvbwotICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBmb28oKTsKLSAg
ICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgWydUaGlzIHsgc2hvdWxkIGJlIGF0IHRo
ZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUgICcKLSAgICAgICAgICAgICAnW3doaXRlc3BhY2Uv
YnJhY2VzXSBbNF0nLAotICAgICAgICAgICAgICdUaGUgY2xhc3MgRm9vIHByb2JhYmx5IG5lZWRz
IGEgdmlydHVhbCBkZXN0cnVjdG9yIGR1ZSB0byBoYXZpbmcgJwotICAgICAgICAgICAgICd2aXJ0
dWFsIG1ldGhvZChzKSwgb25lIGRlY2xhcmVkIGF0IGxpbmUgMi4gIFtydW50aW1lL3ZpcnR1YWxd
IFs0XSddKQotCi0KLWNsYXNzIFdlYktpdFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKLQot
ICAgICMgZm9yIGh0dHA6Ly93ZWJraXQub3JnL2NvZGluZy9jb2Rpbmctc3R5bGUuaHRtbAotICAg
IGRlZiB0ZXN0X2luZGVudGF0aW9uKHNlbGYpOgotICAgICAgICAjIDEuIFVzZSBzcGFjZXMsIG5v
dCB0YWJzLiBUYWJzIHNob3VsZCBvbmx5IGFwcGVhciBpbiBmaWxlcyB0aGF0Ci0gICAgICAgICMg
ICAgcmVxdWlyZSB0aGVtIGZvciBzZW1hbnRpYyBtZWFuaW5nLCBsaWtlIE1ha2VmaWxlcy4KLSAg
ICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2NsYXNzIEZv
byB7XG4nCi0gICAgICAgICAgICAnICAgIGludCBnb287XG4nCi0gICAgICAgICAgICAnfTsnLAot
ICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAg
ICAgICAgICAgICdjbGFzcyBGb28ge1xuJwotICAgICAgICAgICAgJ1x0aW50IGdvbztcbicKLSAg
ICAgICAgICAgICd9OycsCi0gICAgICAgICAgICAnVGFiIGZvdW5kOyBiZXR0ZXIgdG8gdXNlIHNw
YWNlcyAgW3doaXRlc3BhY2UvdGFiXSBbMV0nKQotCi0gICAgICAgICMgMi4gVGhlIGluZGVudCBz
aXplIGlzIDQgc3BhY2VzLgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0g
ICAgICAgICAgICAnY2xhc3MgRm9vIHtcbicKLSAgICAgICAgICAgICcgICAgaW50IGdvbztcbicK
LSAgICAgICAgICAgICd9OycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2NsYXNzIEZvbyB7XG4nCi0gICAgICAgICAg
ICAnICAgaW50IGdvbztcbicKLSAgICAgICAgICAgICd9OycsCi0gICAgICAgICAgICAnV2VpcmQg
bnVtYmVyIG9mIHNwYWNlcyBhdCBsaW5lLXN0YXJ0LiAgQXJlIHlvdSB1c2luZyBhIDQtc3BhY2Ug
aW5kZW50PyAgW3doaXRlc3BhY2UvaW5kZW50XSBbM10nKQotICAgICAgICAjIEZJWE1FOiBObyB0
ZXN0cyBmb3IgOC1zcGFjZXMuCi0KLSAgICAgICAgIyAzLiBJbiBhIGhlYWRlciwgY29kZSBpbnNp
ZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4KLSAgICAgICAgc2VsZi5hc3Nl
cnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ25hbWVzcGFjZSBXZWJDb3JlIHtcblxu
JwotICAgICAgICAgICAgJ2NsYXNzIERvY3VtZW50IHtcbicKLSAgICAgICAgICAgICcgICAgaW50
IG15VmFyaWFibGU7XG4nCi0gICAgICAgICAgICAnfTtcbicKLSAgICAgICAgICAgICd9JywKLSAg
ICAgICAgICAgICcnLAotICAgICAgICAgICAgJ2Zvby5oJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ25hbWVzcGFjZSBPdXRlck5hbWVzcGFjZSB7
XG4nCi0gICAgICAgICAgICAnICAgIG5hbWVzcGFjZSBJbm5lck5hbWVzcGFjZSB7XG4nCi0gICAg
ICAgICAgICAnICAgIGNsYXNzIERvY3VtZW50IHtcbicKLSAgICAgICAgICAgICd9O1xuJwotICAg
ICAgICAgICAgJ307XG4nCi0gICAgICAgICAgICAnfScsCi0gICAgICAgICAgICAnQ29kZSBpbnNp
ZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4gIFt3aGl0ZXNwYWNlL2luZGVu
dF0gWzRdJywKLSAgICAgICAgICAgICdmb28uaCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRp
X2xpbmVfbGludCgKLSAgICAgICAgICAgICduYW1lc3BhY2UgT3V0ZXJOYW1lc3BhY2Uge1xuJwot
ICAgICAgICAgICAgJyAgICBjbGFzcyBEb2N1bWVudCB7XG4nCi0gICAgICAgICAgICAnICAgIG5h
bWVzcGFjZSBJbm5lck5hbWVzcGFjZSB7XG4nCi0gICAgICAgICAgICAnfTtcbicKLSAgICAgICAg
ICAgICd9O1xuJwotICAgICAgICAgICAgJ30nLAotICAgICAgICAgICAgJ0NvZGUgaW5zaWRlIGEg
bmFtZXNwYWNlIHNob3VsZCBub3QgYmUgaW5kZW50ZWQuICBbd2hpdGVzcGFjZS9pbmRlbnRdIFs0
XScsCi0gICAgICAgICAgICAnZm9vLmgnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCi0gICAgICAgICAgICAnbmFtZXNwYWNlIFdlYkNvcmUge1xuJwotICAgICAgICAgICAg
JyNpZiAwXG4nCi0gICAgICAgICAgICAnICAgIGNsYXNzIERvY3VtZW50IHtcbicKLSAgICAgICAg
ICAgICd9O1xuJwotICAgICAgICAgICAgJyNlbmRpZlxuJwotICAgICAgICAgICAgJ30nLAotICAg
ICAgICAgICAgJ0NvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBub3QgYmUgaW5kZW50ZWQu
ICBbd2hpdGVzcGFjZS9pbmRlbnRdIFs0XScsCi0gICAgICAgICAgICAnZm9vLmgnKQotICAgICAg
ICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnbmFtZXNwYWNlIFdl
YkNvcmUge1xuJwotICAgICAgICAgICAgJ2NsYXNzIERvY3VtZW50IHtcbicKLSAgICAgICAgICAg
ICd9O1xuJwotICAgICAgICAgICAgJ30nLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICAn
Zm9vLmgnKQotCi0gICAgICAgICMgNC4gSW4gYW4gaW1wbGVtZW50YXRpb24gZmlsZSAoZmlsZXMg
d2l0aCB0aGUgZXh0ZW5zaW9uIC5jcHAsIC5jCi0gICAgICAgICMgICAgb3IgLm1tKSwgY29kZSBp
bnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4KLSAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ25hbWVzcGFjZSBXZWJDb3JlIHtc
blxuJwotICAgICAgICAgICAgJ0RvY3VtZW50OjpGb28oKVxuJwotICAgICAgICAgICAgJyAgICA6
IGZvbyhiYXIpXG4nCi0gICAgICAgICAgICAnICAgICwgYm9vKGZhcilcbicKLSAgICAgICAgICAg
ICd7XG4nCi0gICAgICAgICAgICAnICAgIHN0dWZmKCk7XG4nCi0gICAgICAgICAgICAnfScsCi0g
ICAgICAgICAgICAnJywKLSAgICAgICAgICAgICdmb28uY3BwJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ25hbWVzcGFjZSBPdXRlck5hbWVzcGFj
ZSB7XG4nCi0gICAgICAgICAgICAnbmFtZXNwYWNlIElubmVyTmFtZXNwYWNlIHtcbicKLSAgICAg
ICAgICAgICdEb2N1bWVudDo6Rm9vKCkgeyB9XG4nCi0gICAgICAgICAgICAnICAgIHZvaWQqIHA7
XG4nCi0gICAgICAgICAgICAnfVxuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAn
Q29kZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4gIFt3aGl0ZXNw
YWNlL2luZGVudF0gWzRdJywKLSAgICAgICAgICAgICdmb28uY3BwJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ25hbWVzcGFjZSBPdXRlck5hbWVz
cGFjZSB7XG4nCi0gICAgICAgICAgICAnbmFtZXNwYWNlIElubmVyTmFtZXNwYWNlIHtcbicKLSAg
ICAgICAgICAgICdEb2N1bWVudDo6Rm9vKCkgeyB9XG4nCi0gICAgICAgICAgICAnfVxuJwotICAg
ICAgICAgICAgJyAgICB2b2lkKiBwO1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAg
ICAnQ29kZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4gIFt3aGl0
ZXNwYWNlL2luZGVudF0gWzRdJywKLSAgICAgICAgICAgICdmb28uY3BwJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ25hbWVzcGFjZSBXZWJDb3Jl
IHtcblxuJwotICAgICAgICAgICAgJyAgICBjb25zdCBjaGFyKiBmb28gPSAic3RhcnQ6OyJcbicK
LSAgICAgICAgICAgICcgICAgICAgICJkZnNmc2ZzIjtcbicKLSAgICAgICAgICAgICd9XG4nLAot
ICAgICAgICAgICAgJ0NvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBub3QgYmUgaW5kZW50
ZWQuICBbd2hpdGVzcGFjZS9pbmRlbnRdIFs0XScsCi0gICAgICAgICAgICAnZm9vLmNwcCcpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICduYW1lc3Bh
Y2UgV2ViQ29yZSB7XG5cbicKLSAgICAgICAgICAgICdjb25zdCBjaGFyKiBmb28odm9pZCogYSA9
ICI7IiwgLy8gO1xuJwotICAgICAgICAgICAgJyAgICB2b2lkKiBiKTtcbicKLSAgICAgICAgICAg
ICcgICAgdm9pZCogcDtcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAgJ0NvZGUg
aW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBub3QgYmUgaW5kZW50ZWQuICBbd2hpdGVzcGFjZS9p
bmRlbnRdIFs0XScsCi0gICAgICAgICAgICAnZm9vLmNwcCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7XG5cbicK
LSAgICAgICAgICAgICdjb25zdCBjaGFyKiBmb29bXSA9IHtcbicKLSAgICAgICAgICAgICcgICAg
InZvaWQqIGIpOyIsIC8vIDtcbicKLSAgICAgICAgICAgICcgICAgImFzZmRmIixcbicKLSAgICAg
ICAgICAgICcgICAgfVxuJwotICAgICAgICAgICAgJyAgICB2b2lkKiBwO1xuJwotICAgICAgICAg
ICAgJ31cbicsCi0gICAgICAgICAgICAnQ29kZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIG5v
dCBiZSBpbmRlbnRlZC4gIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdJywKLSAgICAgICAgICAgICdm
b28uY3BwJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAg
ICAgJ25hbWVzcGFjZSBXZWJDb3JlIHtcblxuJwotICAgICAgICAgICAgJ2NvbnN0IGNoYXIqIGZv
b1tdID0ge1xuJwotICAgICAgICAgICAgJyAgICAidm9pZCogYik7IiwgLy8gfVxuJwotICAgICAg
ICAgICAgJyAgICAiYXNmZGYiLFxuJwotICAgICAgICAgICAgJyAgICB9XG4nCi0gICAgICAgICAg
ICAnfVxuJywKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgJ2Zvby5jcHAnKQotICAgICAg
ICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnICAgIG5hbWVzcGFj
ZSBXZWJDb3JlIHtcblxuJwotICAgICAgICAgICAgJyAgICB2b2lkIERvY3VtZW50OjpGb28oKVxu
JwotICAgICAgICAgICAgJyAgICB7XG4nCi0gICAgICAgICAgICAnc3RhcnQ6IC8vIGluZmluaXRl
IGxvb3BzIGFyZSBmdW4hXG4nCi0gICAgICAgICAgICAnICAgICAgICBnb3RvIHN0YXJ0O1xuJwot
ICAgICAgICAgICAgJyAgICB9JywKLSAgICAgICAgICAgICduYW1lc3BhY2Ugc2hvdWxkIG5ldmVy
IGJlIGluZGVudGVkLiAgW3doaXRlc3BhY2UvaW5kZW50XSBbNF0nLAotICAgICAgICAgICAgJ2Zv
by5jcHAnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAg
ICAnbmFtZXNwYWNlIFdlYkNvcmUge1xuJwotICAgICAgICAgICAgJyAgICBEb2N1bWVudDo6Rm9v
KCkgeyB9XG4nCi0gICAgICAgICAgICAnfScsCi0gICAgICAgICAgICAnQ29kZSBpbnNpZGUgYSBu
YW1lc3BhY2Ugc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4nCi0gICAgICAgICAgICAnICBbd2hpdGVz
cGFjZS9pbmRlbnRdIFs0XScsCi0gICAgICAgICAgICAnZm9vLmNwcCcpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7
XG4nCi0gICAgICAgICAgICAnI2RlZmluZSBhYmMoeCkgeDsgXFxcbicKLSAgICAgICAgICAgICcg
ICAgeFxuJwotICAgICAgICAgICAgJ30nLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICAn
Zm9vLmNwcCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAg
ICAgICduYW1lc3BhY2UgV2ViQ29yZSB7XG4nCi0gICAgICAgICAgICAnI2RlZmluZSBhYmMoeCkg
eDsgXFxcbicKLSAgICAgICAgICAgICcgICAgeFxuJwotICAgICAgICAgICAgJyAgICB2b2lkKiB4
OycKLSAgICAgICAgICAgICd9JywKLSAgICAgICAgICAgICdDb2RlIGluc2lkZSBhIG5hbWVzcGFj
ZSBzaG91bGQgbm90IGJlIGluZGVudGVkLiAgW3doaXRlc3BhY2UvaW5kZW50XSBbNF0nLAotICAg
ICAgICAgICAgJ2Zvby5jcHAnKQotCi0gICAgICAgICMgNS4gQSBjYXNlIGxhYmVsIHNob3VsZCBs
aW5lIHVwIHdpdGggaXRzIHN3aXRjaCBzdGF0ZW1lbnQuIFRoZQotICAgICAgICAjICAgIGNhc2Ug
c3RhdGVtZW50IGlzIGluZGVudGVkLgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xp
bnQoCi0gICAgICAgICAgICAnICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7XG4nCi0gICAgICAgICAg
ICAnICAgIGNhc2UgZm9vQ29uZGl0aW9uOlxuJwotICAgICAgICAgICAgJyAgICBjYXNlIGJhckNv
bmRpdGlvbjpcbicKLSAgICAgICAgICAgICcgICAgICAgIGkrKztcbicKLSAgICAgICAgICAgICcg
ICAgICAgIGJyZWFrO1xuJwotICAgICAgICAgICAgJyAgICBkZWZhdWx0OlxuJwotICAgICAgICAg
ICAgJyAgICAgICAgaS0tO1xuJwotICAgICAgICAgICAgJyAgICB9XG4nLAotICAgICAgICAgICAg
JycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcg
ICAgc3dpdGNoIChjb25kaXRpb24pIHtcbicKLSAgICAgICAgICAgICcgICAgY2FzZSBmb29Db25k
aXRpb246XG4nCi0gICAgICAgICAgICAnICAgICAgICBzd2l0Y2ggKG90aGVyQ29uZGl0aW9uKSB7
XG4nCi0gICAgICAgICAgICAnICAgICAgICBkZWZhdWx0OlxuJwotICAgICAgICAgICAgJyAgICAg
ICAgICAgIHJldHVybjtcbicKLSAgICAgICAgICAgICcgICAgICAgIH1cbicKLSAgICAgICAgICAg
ICcgICAgZGVmYXVsdDpcbicKLSAgICAgICAgICAgICcgICAgICAgIGktLTtcbicKLSAgICAgICAg
ICAgICcgICAgfVxuJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7XG4nCi0g
ICAgICAgICAgICAnICAgIGNhc2UgZm9vQ29uZGl0aW9uOiBicmVhaztcbicKLSAgICAgICAgICAg
ICcgICAgZGVmYXVsdDogcmV0dXJuO1xuJwotICAgICAgICAgICAgJyAgICB9XG4nLAotICAgICAg
ICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAg
ICAgICcgICAgc3dpdGNoIChjb25kaXRpb24pIHtcbicKLSAgICAgICAgICAgICcgICAgICAgIGNh
c2UgZm9vQ29uZGl0aW9uOlxuJwotICAgICAgICAgICAgJyAgICAgICAgY2FzZSBiYXJDb25kaXRp
b246XG4nCi0gICAgICAgICAgICAnICAgICAgICAgICAgaSsrO1xuJwotICAgICAgICAgICAgJyAg
ICAgICAgICAgIGJyZWFrO1xuJwotICAgICAgICAgICAgJyAgICAgICAgZGVmYXVsdDpcbicKLSAg
ICAgICAgICAgICcgICAgICAgICAgICBpLS07XG4nCi0gICAgICAgICAgICAnICAgIH1cbicsCi0g
ICAgICAgICAgICAnQSBjYXNlIGxhYmVsIHNob3VsZCBub3QgYmUgaW5kZW50ZWQsIGJ1dCBsaW5l
IHVwIHdpdGggaXRzIHN3aXRjaCBzdGF0ZW1lbnQuJwotICAgICAgICAgICAgJyAgW3doaXRlc3Bh
Y2UvaW5kZW50XSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0g
ICAgICAgICAgICAnICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7XG4nCi0gICAgICAgICAgICAnICAg
ICAgICBjYXNlIGZvb0NvbmRpdGlvbjpcbicKLSAgICAgICAgICAgICcgICAgICAgICAgICBicmVh
aztcbicKLSAgICAgICAgICAgICcgICAgZGVmYXVsdDpcbicKLSAgICAgICAgICAgICcgICAgICAg
ICAgICBpLS07XG4nCi0gICAgICAgICAgICAnICAgIH1cbicsCi0gICAgICAgICAgICAnQSBjYXNl
IGxhYmVsIHNob3VsZCBub3QgYmUgaW5kZW50ZWQsIGJ1dCBsaW5lIHVwIHdpdGggaXRzIHN3aXRj
aCBzdGF0ZW1lbnQuJwotICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvaW5kZW50XSBbNF0nKQot
ICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnICAgIHN3
aXRjaCAoY29uZGl0aW9uKSB7XG4nCi0gICAgICAgICAgICAnICAgIGNhc2UgZm9vQ29uZGl0aW9u
OlxuJwotICAgICAgICAgICAgJyAgICBjYXNlIGJhckNvbmRpdGlvbjpcbicKLSAgICAgICAgICAg
ICcgICAgICAgIHN3aXRjaCAob3RoZXJDb25kaXRpb24pIHtcbicKLSAgICAgICAgICAgICcgICAg
ICAgICAgICBkZWZhdWx0OlxuJwotICAgICAgICAgICAgJyAgICAgICAgICAgIHJldHVybjtcbicK
LSAgICAgICAgICAgICcgICAgICAgIH1cbicKLSAgICAgICAgICAgICcgICAgZGVmYXVsdDpcbicK
LSAgICAgICAgICAgICcgICAgICAgIGktLTtcbicKLSAgICAgICAgICAgICcgICAgfVxuJywKLSAg
ICAgICAgICAgICdBIGNhc2UgbGFiZWwgc2hvdWxkIG5vdCBiZSBpbmRlbnRlZCwgYnV0IGxpbmUg
dXAgd2l0aCBpdHMgc3dpdGNoIHN0YXRlbWVudC4nCi0gICAgICAgICAgICAnICBbd2hpdGVzcGFj
ZS9pbmRlbnRdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAg
ICAgICAgICAgICcgICAgc3dpdGNoIChjb25kaXRpb24pIHtcbicKLSAgICAgICAgICAgICcgICAg
Y2FzZSBmb29Db25kaXRpb246XG4nCi0gICAgICAgICAgICAnICAgIGNhc2UgYmFyQ29uZGl0aW9u
OlxuJwotICAgICAgICAgICAgJyAgICBpKys7XG4nCi0gICAgICAgICAgICAnICAgIGJyZWFrO1xu
XG4nCi0gICAgICAgICAgICAnICAgIGRlZmF1bHQ6XG4nCi0gICAgICAgICAgICAnICAgIGktLTtc
bicKLSAgICAgICAgICAgICcgICAgfVxuJywKLSAgICAgICAgICAgICdOb24tbGFiZWwgY29kZSBp
bnNpZGUgc3dpdGNoIHN0YXRlbWVudHMgc2hvdWxkIGJlIGluZGVudGVkLicKLSAgICAgICAgICAg
ICcgIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAotICAgICAgICAgICAgJyAgICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuJwotICAg
ICAgICAgICAgJyAgICBjYXNlIGZvb0NvbmRpdGlvbjpcbicKLSAgICAgICAgICAgICcgICAgY2Fz
ZSBiYXJDb25kaXRpb246XG4nCi0gICAgICAgICAgICAnICAgICAgICBzd2l0Y2ggKG90aGVyQ29u
ZGl0aW9uKSB7XG4nCi0gICAgICAgICAgICAnICAgICAgICBkZWZhdWx0OlxuJwotICAgICAgICAg
ICAgJyAgICAgICAgcmV0dXJuO1xuJwotICAgICAgICAgICAgJyAgICAgICAgfVxuJwotICAgICAg
ICAgICAgJyAgICBkZWZhdWx0OlxuJwotICAgICAgICAgICAgJyAgICAgICAgaS0tO1xuJwotICAg
ICAgICAgICAgJyAgICB9XG4nLAotICAgICAgICAgICAgJ05vbi1sYWJlbCBjb2RlIGluc2lkZSBz
d2l0Y2ggc3RhdGVtZW50cyBzaG91bGQgYmUgaW5kZW50ZWQuJwotICAgICAgICAgICAgJyAgW3do
aXRlc3BhY2UvaW5kZW50XSBbNF0nKQotCi0gICAgICAgICMgNi4gQm9vbGVhbiBleHByZXNzaW9u
cyBhdCB0aGUgc2FtZSBuZXN0aW5nIGxldmVsIHRoYXQgc3BhbgotICAgICAgICAjICAgbXVsdGlw
bGUgbGluZXMgc2hvdWxkIGhhdmUgdGhlaXIgb3BlcmF0b3JzIG9uIHRoZSBsZWZ0IHNpZGUgb2YK
LSAgICAgICAgIyAgIHRoZSBsaW5lIGluc3RlYWQgb2YgdGhlIHJpZ2h0IHNpZGUuCi0gICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcgICAgcmV0dXJuIGF0
dHItPm5hbWUoKSA9PSBzcmNBdHRyXG4nCi0gICAgICAgICAgICAnICAgICAgICB8fCBhdHRyLT5u
YW1lKCkgPT0gbG93c3JjQXR0cjtcbicsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJyAgICByZXR1cm4gYXR0ci0+bmFt
ZSgpID09IHNyY0F0dHIgfHxcbicKLSAgICAgICAgICAgICcgICAgICAgIGF0dHItPm5hbWUoKSA9
PSBsb3dzcmNBdHRyO1xuJywKLSAgICAgICAgICAgICdCb29sZWFuIGV4cHJlc3Npb25zIHRoYXQg
c3BhbiBtdWx0aXBsZSBsaW5lcyBzaG91bGQgaGF2ZSB0aGVpciAnCi0gICAgICAgICAgICAnb3Bl
cmF0b3JzIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGxpbmUgaW5zdGVhZCBvZiB0aGUgcmlnaHQg
c2lkZS4nCi0gICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFs0XScpCi0KLSAg
ICBkZWYgdGVzdF9zcGFjaW5nKHNlbGYpOgotICAgICAgICAjIDEuIERvIG5vdCBwbGFjZSBzcGFj
ZXMgYXJvdW5kIHVuYXJ5IG9wZXJhdG9ycy4KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KAotICAgICAgICAgICAgJ2krKzsnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpICsrOycsCi0gICAgICAg
ICAgICAnRXh0cmEgc3BhY2UgZm9yIG9wZXJhdG9yICArKzsgIFt3aGl0ZXNwYWNlL29wZXJhdG9y
c10gWzRdJykKLQotICAgICAgICAjIDIuIERvIHBsYWNlIHNwYWNlcyBhcm91bmQgYmluYXJ5IGFu
ZCB0ZXJuYXJ5IG9wZXJhdG9ycy4KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAotICAgICAgICAgICAgJ3kgPSBtICogeCArIGI7JywKLSAgICAgICAgICAgICcnKQotICAgICAg
ICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnZihhLCBiKTsnLAot
ICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAg
ICAgICAgICAgICdjID0gYSB8IGI7JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFz
c2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAncmV0dXJuIGNvbmRpdGlvbiA/IDEg
OiAwOycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50KAotICAgICAgICAgICAgJ3k9bSp4K2I7JywKLSAgICAgICAgICAgICdNaXNzaW5nIHNwYWNl
cyBhcm91bmQgPSAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbNF0nKQotICAgICAgICBzZWxmLmFz
c2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnZihhLGIpOycsCi0gICAgICAgICAg
ICAnTWlzc2luZyBzcGFjZSBhZnRlciAsICBbd2hpdGVzcGFjZS9jb21tYV0gWzNdJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2MgPSBhfGI7JywK
LSAgICAgICAgICAgICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgfCAgW3doaXRlc3BhY2Uvb3BlcmF0
b3JzXSBbM10nKQotICAgICAgICAjIEZJWE1FOiBXZSBjYW5ub3QgY2F0Y2ggdGhpcyBsaW50IGVy
cm9yLgotICAgICAgICAjIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgIyAg
ICAgJ3JldHVybiBjb25kaXRpb24gPyAxOjA7JywKLSAgICAgICAgIyAgICAgJycpCi0KLSAgICAg
ICAgIyAzLiBQbGFjZSBzcGFjZXMgYmV0d2VlbiBjb250cm9sIHN0YXRlbWVudHMgYW5kIHRoZWly
IHBhcmVudGhlc2VzLgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAg
ICAgICAgICAnICAgIGlmIChjb25kaXRpb24pXG4nCi0gICAgICAgICAgICAnICAgICAgICBkb0l0
KCk7XG4nLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKLSAgICAgICAgICAgICcgICAgaWYoY29uZGl0aW9uKVxuJwotICAgICAgICAgICAgJyAg
ICAgICAgZG9JdCgpO1xuJywKLSAgICAgICAgICAgICdNaXNzaW5nIHNwYWNlIGJlZm9yZSAoIGlu
IGlmKCAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNV0nKQotCi0gICAgICAgICMgNC4gRG8gbm90IHBs
YWNlIHNwYWNlcyBiZXR3ZWVuIGEgZnVuY3Rpb24gYW5kIGl0cyBwYXJlbnRoZXNlcywKLSAgICAg
ICAgIyAgICBvciBiZXR3ZWVuIGEgcGFyZW50aGVzaXMgYW5kIGl0cyBjb250ZW50LgotICAgICAg
ICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnZihhLCBiKTsnLAot
ICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAg
ICAgICAgICAgICdmIChhLCBiKTsnLAotICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSAo
IGluIGZ1bmN0aW9uIGNhbGwgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzRdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2YoIGEsIGIgKTsnLAotICAg
ICAgICAgICAgWydFeHRyYSBzcGFjZSBhZnRlciAoIGluIGZ1bmN0aW9uIGNhbGwgIFt3aGl0ZXNw
YWNlL3BhcmVuc10gWzRdJywKLSAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgYmVmb3JlICkgIFt3
aGl0ZXNwYWNlL3BhcmVuc10gWzJdJ10pCi0KLSAgICBkZWYgdGVzdF9saW5lX2JyZWFraW5nKHNl
bGYpOgotICAgICAgICAjIDEuIEVhY2ggc3RhdGVtZW50IHNob3VsZCBnZXQgaXRzIG93biBsaW5l
LgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnICAg
IHgrKztcbicKLSAgICAgICAgICAgICcgICAgeSsrO1xuJwotICAgICAgICAgICAgJyAgICBpZiAo
Y29uZGl0aW9uKTtcbicKLSAgICAgICAgICAgICcgICAgICAgIGRvSXQoKTtcbicsCi0gICAgICAg
ICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAg
ICAgJyAgICBpZiAoY29uZGl0aW9uKSBcXFxuJwotICAgICAgICAgICAgJyAgICAgICAgZG9JdCgp
O1xuJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xp
bnQoCi0gICAgICAgICAgICAnICAgIHgrKzsgeSsrOycsCi0gICAgICAgICAgICAnTW9yZSB0aGFu
IG9uZSBjb21tYW5kIG9uIHRoZSBzYW1lIGxpbmUgIFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XScp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcgICAg
aWYgKGNvbmRpdGlvbikgZG9JdCgpO1xuJywKLSAgICAgICAgICAgICdNb3JlIHRoYW4gb25lIGNv
bW1hbmQgb24gdGhlIHNhbWUgbGluZSBpbiBpZiAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNF0nKQot
Ci0gICAgICAgICMgMi4gQW4gZWxzZSBzdGF0ZW1lbnQgc2hvdWxkIGdvIG9uIHRoZSBzYW1lIGxp
bmUgYXMgYSBwcmVjZWRpbmcKLSAgICAgICAgIyAgIGNsb3NlIGJyYWNlIGlmIG9uZSBpcyBwcmVz
ZW50LCBlbHNlIGl0IHNob3VsZCBsaW5lIHVwIHdpdGggdGhlCi0gICAgICAgICMgICBpZiBzdGF0
ZW1lbnQuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAg
ICdpZiAoY29uZGl0aW9uKSB7XG4nCi0gICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nKCk7XG4n
Ci0gICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nQWdhaW4oKTtcbicKLSAgICAgICAgICAgICd9
IGVsc2Uge1xuJwotICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZ0Vsc2UoKTtcbicKLSAgICAg
ICAgICAgICcgICAgZG9Tb21ldGhpbmdFbHNlQWdhaW4oKTtcbicKLSAgICAgICAgICAgICd9XG4n
LAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
LSAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKVxuJwotICAgICAgICAgICAgJyAgICBkb1NvbWV0
aGluZygpO1xuJwotICAgICAgICAgICAgJ2Vsc2VcbicKLSAgICAgICAgICAgICcgICAgZG9Tb21l
dGhpbmdFbHNlKCk7XG4nLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKVxuJwotICAgICAgICAg
ICAgJyAgICBkb1NvbWV0aGluZygpO1xuJwotICAgICAgICAgICAgJ2Vsc2Uge1xuJwotICAgICAg
ICAgICAgJyAgICBkb1NvbWV0aGluZ0Vsc2UoKTtcbicKLSAgICAgICAgICAgICcgICAgZG9Tb21l
dGhpbmdFbHNlQWdhaW4oKTtcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAgJycp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcjZGVm
aW5lIFRFU1RfQVNTRVJUKGV4cHJlc3Npb24pIGRvIHsgaWYgKCEoZXhwcmVzc2lvbikpIHsgVGVz
dHNDb250cm9sbGVyOjpzaGFyZWQoKS50ZXN0RmFpbGVkKF9fRklMRV9fLCBfX0xJTkVfXywgI2V4
cHJlc3Npb24pOyByZXR1cm47IH0gfSB3aGlsZSAoMClcbicsCi0gICAgICAgICAgICAnJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJyNkZWZpbmUg
VEVTVF9BU1NFUlQoZXhwcmVzc2lvbikgZG8geyBpZiAoICEoZXhwcmVzc2lvbikpIHsgVGVzdHND
b250cm9sbGVyOjpzaGFyZWQoKS50ZXN0RmFpbGVkKF9fRklMRV9fLCBfX0xJTkVfXywgI2V4cHJl
c3Npb24pOyByZXR1cm47IH0gfSB3aGlsZSAoMClcbicsCi0gICAgICAgICAgICAnTWlzbWF0Y2hp
bmcgc3BhY2VzIGluc2lkZSAoKSBpbiBpZiAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNV0nKQotICAg
ICAgICAjIEZJWE1FOiBjdXJyZW50bHkgd2Ugb25seSBjaGVjayBmaXJzdCBjb25kaXRpb25hbCwg
c28gd2UgY2Fubm90IGRldGVjdCBlcnJvcnMgaW4gbmV4dCBvbmVzLgotICAgICAgICAjIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgIyAgICAgJyNkZWZpbmUgVEVTVF9BU1NF
UlQoZXhwcmVzc2lvbikgZG8geyBpZiAoIShleHByZXNzaW9uKSkgeyBUZXN0c0NvbnRyb2xsZXI6
OnNoYXJlZCgpLnRlc3RGYWlsZWQoX19GSUxFX18sIF9fTElORV9fLCAjZXhwcmVzc2lvbik7IHJl
dHVybjsgfSB9IHdoaWxlICgwIClcbicsCi0gICAgICAgICMgICAgICdNaXNtYXRjaGluZyBzcGFj
ZXMgaW5zaWRlICgpIGluIGlmICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKSB7
XG4nCi0gICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nKCk7XG4nCi0gICAgICAgICAgICAnICAg
IGRvU29tZXRoaW5nQWdhaW4oKTtcbicKLSAgICAgICAgICAgICd9XG4nCi0gICAgICAgICAgICAn
ZWxzZSB7XG4nCi0gICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nRWxzZSgpO1xuJwotICAgICAg
ICAgICAgJyAgICBkb1NvbWV0aGluZ0Vsc2VBZ2FpbigpO1xuJwotICAgICAgICAgICAgJ31cbics
Ci0gICAgICAgICAgICAnQW4gZWxzZSBzaG91bGQgYXBwZWFyIG9uIHRoZSBzYW1lIGxpbmUgYXMg
dGhlIHByZWNlZGluZyB9ICBbd2hpdGVzcGFjZS9uZXdsaW5lXSBbNF0nKQotICAgICAgICBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaWYgKGNvbmRpdGlvbikgZG9T
b21ldGhpbmcoKTsgZWxzZSBkb1NvbWV0aGluZ0Vsc2UoKTtcbicsCi0gICAgICAgICAgICBbJ01v
cmUgdGhhbiBvbmUgY29tbWFuZCBvbiB0aGUgc2FtZSBsaW5lICBbd2hpdGVzcGFjZS9uZXdsaW5l
XSBbNF0nLAotICAgICAgICAgICAgICdFbHNlIGNsYXVzZSBzaG91bGQgbmV2ZXIgYmUgb24gc2Ft
ZSBsaW5lIGFzIGVsc2UgKHVzZSAyIGxpbmVzKSAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJywK
LSAgICAgICAgICAgICAnTW9yZSB0aGFuIG9uZSBjb21tYW5kIG9uIHRoZSBzYW1lIGxpbmUgaW4g
aWYgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzRdJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRp
X2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKSBkb1NvbWV0aGluZygpOyBl
bHNlIHtcbicKLSAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmdFbHNlKCk7XG4nCi0gICAgICAg
ICAgICAnfVxuJywKLSAgICAgICAgICAgIFsnTW9yZSB0aGFuIG9uZSBjb21tYW5kIG9uIHRoZSBz
YW1lIGxpbmUgaW4gaWYgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzRdJywKLSAgICAgICAgICAgICAn
T25lIGxpbmUgY29udHJvbCBjbGF1c2VzIHNob3VsZCBub3QgdXNlIGJyYWNlcy4gIFt3aGl0ZXNw
YWNlL2JyYWNlc10gWzRdJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
LSAgICAgICAgICAgICd2b2lkIGZ1bmMoKVxuJwotICAgICAgICAgICAgJ3tcbicKLSAgICAgICAg
ICAgICcgICAgd2hpbGUgKGNvbmRpdGlvbikgeyB9XG4nCi0gICAgICAgICAgICAnICAgIHJldHVy
biAwO1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ3ZvaWQgZnVuYygpXG4nCi0g
ICAgICAgICAgICAne1xuJwotICAgICAgICAgICAgJyAgICBmb3IgKGkgPSAwOyBpIDwgNDI7IGkr
KykgeyBmb29iYXIoKTsgfVxuJwotICAgICAgICAgICAgJyAgICByZXR1cm4gMDtcbicKLSAgICAg
ICAgICAgICd9XG4nLAotICAgICAgICAgICAgJ01vcmUgdGhhbiBvbmUgY29tbWFuZCBvbiB0aGUg
c2FtZSBsaW5lIGluIGZvciAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNF0nKQotCi0gICAgICAgICMg
My4gQW4gZWxzZSBpZiBzdGF0ZW1lbnQgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgYW4gaWYgc3RhdGVt
ZW50Ci0gICAgICAgICMgICAgd2hlbiB0aGUgcHJpb3IgaWYgY29uY2x1ZGVzIHdpdGggYSByZXR1
cm4gc3RhdGVtZW50LgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAg
ICAgICAgICAnaWYgKG1vdGl2YXRlZCkge1xuJwotICAgICAgICAgICAgJyAgICBpZiAobGlxdWlk
KVxuJwotICAgICAgICAgICAgJyAgICAgICAgcmV0dXJuIG1vbmV5O1xuJwotICAgICAgICAgICAg
J30gZWxzZSBpZiAodGlyZWQpXG4nCi0gICAgICAgICAgICAnICAgIGJyZWFrO1xuJywKLSAgICAg
ICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAg
ICAgICAnaWYgKGNvbmRpdGlvbilcbicKLSAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmcoKTtc
bicKLSAgICAgICAgICAgICdlbHNlIGlmIChvdGhlckNvbmRpdGlvbilcbicKLSAgICAgICAgICAg
ICcgICAgZG9Tb21ldGhpbmdFbHNlKCk7XG4nLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKVxu
JwotICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZygpO1xuJwotICAgICAgICAgICAgJ2Vsc2Vc
bicKLSAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmdFbHNlKCk7XG4nLAotICAgICAgICAgICAg
JycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdp
ZiAoY29uZGl0aW9uKVxuJwotICAgICAgICAgICAgJyAgICByZXR1cm5WYWx1ZSA9IGZvbztcbicK
LSAgICAgICAgICAgICdlbHNlIGlmIChvdGhlckNvbmRpdGlvbilcbicKLSAgICAgICAgICAgICcg
ICAgcmV0dXJuVmFsdWUgPSBiYXI7XG4nLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKVxuJwot
ICAgICAgICAgICAgJyAgICByZXR1cm5WYWx1ZSA9IGZvbztcbicKLSAgICAgICAgICAgICdlbHNl
XG4nCi0gICAgICAgICAgICAnICAgIHJldHVyblZhbHVlID0gYmFyO1xuJywKLSAgICAgICAgICAg
ICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAn
aWYgKGNvbmRpdGlvbilcbicKLSAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmcoKTtcbicKLSAg
ICAgICAgICAgICdlbHNlIGlmIChsaXF1aWQpXG4nCi0gICAgICAgICAgICAnICAgIHJldHVybiBt
b25leTtcbicKLSAgICAgICAgICAgICdlbHNlIGlmIChicm9rZSlcbicKLSAgICAgICAgICAgICcg
ICAgcmV0dXJuIGZhdm9yO1xuJwotICAgICAgICAgICAgJ2Vsc2VcbicKLSAgICAgICAgICAgICcg
ICAgc2xlZXAoMjg4MDApO1xuJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaWYgKGxpcXVpZCkge1xuJwotICAgICAg
ICAgICAgJyAgICBwcmVwYXJlKCk7XG4nCi0gICAgICAgICAgICAnICAgIHJldHVybiBtb25leTtc
bicKLSAgICAgICAgICAgICd9IGVsc2UgaWYgKGdyZWVkeSkge1xuJwotICAgICAgICAgICAgJyAg
ICBrZWVwKCk7XG4nCi0gICAgICAgICAgICAnICAgIHJldHVybiBub3RoaW5nO1xuJwotICAgICAg
ICAgICAgJ31cbicsCi0gICAgICAgICAgICAnQW4gZWxzZSBpZiBzdGF0ZW1lbnQgc2hvdWxkIGJl
IHdyaXR0ZW4gYXMgYW4gaWYgc3RhdGVtZW50IHdoZW4gdGhlICcKLSAgICAgICAgICAgICdwcmlv
ciAiaWYiIGNvbmNsdWRlcyB3aXRoIGEgcmV0dXJuLCBicmVhaywgY29udGludWUgb3IgZ290byBz
dGF0ZW1lbnQuJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NvbnRyb2xfZmxvd10gWzRd
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJyAg
ICBpZiAoc3R1cGlkKSB7XG4nCi0gICAgICAgICAgICAnaW5maW5pdGVMb29wOlxuJwotICAgICAg
ICAgICAgJyAgICAgICAgZ290byBpbmZpbml0ZUxvb3A7XG4nCi0gICAgICAgICAgICAnICAgIH0g
ZWxzZSBpZiAoZXZpbClcbicKLSAgICAgICAgICAgICcgICAgICAgIGdvdG8gaGVsbDtcbicsCi0g
ICAgICAgICAgICAnQW4gZWxzZSBpZiBzdGF0ZW1lbnQgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgYW4g
aWYgc3RhdGVtZW50IHdoZW4gdGhlICcKLSAgICAgICAgICAgICdwcmlvciAiaWYiIGNvbmNsdWRl
cyB3aXRoIGEgcmV0dXJuLCBicmVhaywgY29udGludWUgb3IgZ290byBzdGF0ZW1lbnQuJwotICAg
ICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NvbnRyb2xfZmxvd10gWzRdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2lmIChsaXF1aWQpXG4nCi0g
ICAgICAgICAgICAne1xuJwotICAgICAgICAgICAgJyAgICBwcmVwYXJlKCk7XG4nCi0gICAgICAg
ICAgICAnICAgIHJldHVybiBtb25leTtcbicKLSAgICAgICAgICAgICd9XG4nCi0gICAgICAgICAg
ICAnZWxzZSBpZiAoZ3JlZWR5KVxuJwotICAgICAgICAgICAgJyAgICBrZWVwKCk7XG4nLAotICAg
ICAgICAgICAgWydUaGlzIHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxp
bmUgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJywKLSAgICAgICAgICAgICdBbiBlbHNlIHNob3Vs
ZCBhcHBlYXIgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgcHJlY2VkaW5nIH0gIFt3aGl0ZXNwYWNl
L25ld2xpbmVdIFs0XScsCi0gICAgICAgICAgICAnQW4gZWxzZSBpZiBzdGF0ZW1lbnQgc2hvdWxk
IGJlIHdyaXR0ZW4gYXMgYW4gaWYgc3RhdGVtZW50IHdoZW4gdGhlICcKLSAgICAgICAgICAgICdw
cmlvciAiaWYiIGNvbmNsdWRlcyB3aXRoIGEgcmV0dXJuLCBicmVhaywgY29udGludWUgb3IgZ290
byBzdGF0ZW1lbnQuJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NvbnRyb2xfZmxvd10g
WzRdJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAg
ICdpZiAoZ29uZSlcbicKLSAgICAgICAgICAgICcgICAgcmV0dXJuO1xuJwotICAgICAgICAgICAg
J2Vsc2UgaWYgKGhlcmUpXG4nCi0gICAgICAgICAgICAnICAgIGdvKCk7XG4nLAotICAgICAgICAg
ICAgJ0FuIGVsc2UgaWYgc3RhdGVtZW50IHNob3VsZCBiZSB3cml0dGVuIGFzIGFuIGlmIHN0YXRl
bWVudCB3aGVuIHRoZSAnCi0gICAgICAgICAgICAncHJpb3IgImlmIiBjb25jbHVkZXMgd2l0aCBh
IHJldHVybiwgYnJlYWssIGNvbnRpbnVlIG9yIGdvdG8gc3RhdGVtZW50LicKLSAgICAgICAgICAg
ICcgIFtyZWFkYWJpbGl0eS9jb250cm9sX2Zsb3ddIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAoZ29uZSlcbicKLSAgICAgICAgICAg
ICcgICAgcmV0dXJuO1xuJwotICAgICAgICAgICAgJ2Vsc2VcbicKLSAgICAgICAgICAgICcgICAg
Z28oKTtcbicsCi0gICAgICAgICAgICAnQW4gZWxzZSBzdGF0ZW1lbnQgY2FuIGJlIHJlbW92ZWQg
d2hlbiB0aGUgcHJpb3IgImlmIiBjb25jbHVkZXMgJwotICAgICAgICAgICAgJ3dpdGggYSByZXR1
cm4sIGJyZWFrLCBjb250aW51ZSBvciBnb3RvIHN0YXRlbWVudC4nCi0gICAgICAgICAgICAnICBb
cmVhZGFiaWxpdHkvY29udHJvbF9mbG93XSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaWYgKG1vdGl2YXRlZCkge1xuJwotICAgICAgICAg
ICAgJyAgICBwcmVwYXJlKCk7XG4nCi0gICAgICAgICAgICAnICAgIGNvbnRpbnVlO1xuJwotICAg
ICAgICAgICAgJ30gZWxzZSB7XG4nCi0gICAgICAgICAgICAnICAgIGNsZWFuVXAoKTtcbicKLSAg
ICAgICAgICAgICcgICAgYnJlYWs7XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAg
ICdBbiBlbHNlIHN0YXRlbWVudCBjYW4gYmUgcmVtb3ZlZCB3aGVuIHRoZSBwcmlvciAiaWYiIGNv
bmNsdWRlcyAnCi0gICAgICAgICAgICAnd2l0aCBhIHJldHVybiwgYnJlYWssIGNvbnRpbnVlIG9y
IGdvdG8gc3RhdGVtZW50LicKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jb250cm9sX2Zs
b3ddIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAg
ICAgICdpZiAodGlyZWQpXG4nCi0gICAgICAgICAgICAnICAgIGJyZWFrO1xuJwotICAgICAgICAg
ICAgJ2Vsc2Uge1xuJwotICAgICAgICAgICAgJyAgICBwcmVwYXJlKCk7XG4nCi0gICAgICAgICAg
ICAnICAgIGNvbnRpbnVlO1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAnQW4g
ZWxzZSBzdGF0ZW1lbnQgY2FuIGJlIHJlbW92ZWQgd2hlbiB0aGUgcHJpb3IgImlmIiBjb25jbHVk
ZXMgJwotICAgICAgICAgICAgJ3dpdGggYSByZXR1cm4sIGJyZWFrLCBjb250aW51ZSBvciBnb3Rv
IHN0YXRlbWVudC4nCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY29udHJvbF9mbG93XSBb
NF0nKQotCi0gICAgZGVmIHRlc3RfYnJhY2VzKHNlbGYpOgotICAgICAgICAjIDEuIEZ1bmN0aW9u
IGRlZmluaXRpb25zOiBwbGFjZSBlYWNoIGJyYWNlIG9uIGl0cyBvd24gbGluZS4KLSAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2ludCBtYWluKClcbicK
LSAgICAgICAgICAgICd7XG4nCi0gICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nKCk7XG4nCi0g
ICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaW50IG1haW4oKSB7XG4nCi0gICAgICAgICAg
ICAnICAgIGRvU29tZXRoaW5nKCk7XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAg
ICdQbGFjZSBicmFjZSBvbiBpdHMgb3duIGxpbmUgZm9yIGZ1bmN0aW9uIGRlZmluaXRpb25zLiAg
W3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQotCi0gICAgICAgICMgMi4gT3RoZXIgYnJhY2VzOiBw
bGFjZSB0aGUgb3BlbiBicmFjZSBvbiB0aGUgbGluZSBwcmVjZWRpbmcgdGhlCi0gICAgICAgICMg
ICAgY29kZSBibG9jazsgcGxhY2UgdGhlIGNsb3NlIGJyYWNlIG9uIGl0cyBvd24gbGluZS4KLSAg
ICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2NsYXNzIE15
Q2xhc3Mge1xuJwotICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJwotICAgICAgICAgICAgJ307
XG4nLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKLSAgICAgICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7XG4nCi0gICAgICAgICAgICAnaW50
IGZvbztcbicKLSAgICAgICAgICAgICd9O1xuJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnZm9yIChpbnQgaSA9IDA7
IGkgPCAxMDsgaSsrKSB7XG4nCi0gICAgICAgICAgICAnICAgIERvU29tZXRoaW5nKCk7XG4nCi0g
ICAgICAgICAgICAnfTtcbicsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2NsYXNzIE15Q2xhc3NcbicKLSAgICAgICAg
ICAgICd7XG4nCi0gICAgICAgICAgICAnICAgIGludCBmb287XG4nCi0gICAgICAgICAgICAnfTtc
bicsCi0gICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2
aW91cyBsaW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKVxuJwotICAgICAg
ICAgICAgJ3tcbicKLSAgICAgICAgICAgICcgICAgaW50IGZvbztcbicKLSAgICAgICAgICAgICd9
XG4nLAotICAgICAgICAgICAgJ1RoaXMgeyBzaG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUgcHJl
dmlvdXMgbGluZSAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsg
aSsrKVxuJwotICAgICAgICAgICAgJ3tcbicKLSAgICAgICAgICAgICcgICAgaW50IGZvbztcbicK
LSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAgJ1RoaXMgeyBzaG91bGQgYmUgYXQgdGhl
IGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZSAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQotICAg
ICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnd2hpbGUgKHRy
dWUpXG4nCi0gICAgICAgICAgICAne1xuJwotICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJwot
ICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUg
ZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdmb3JlYWNoIChG
b28qIGZvbywgZm9vcylcbicKLSAgICAgICAgICAgICd7XG4nCi0gICAgICAgICAgICAnICAgIGlu
dCBiYXI7XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAgICdUaGlzIHsgc2hvdWxk
IGJlIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUgIFt3aGl0ZXNwYWNlL2JyYWNlc10g
WzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAg
J3N3aXRjaCAodHlwZSlcbicKLSAgICAgICAgICAgICd7XG4nCi0gICAgICAgICAgICAnY2FzZSBm
b286IHJldHVybjtcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAgJ1RoaXMgeyBz
aG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZSAgW3doaXRlc3BhY2UvYnJh
Y2VzXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAg
ICAgICAnaWYgKGNvbmRpdGlvbilcbicKLSAgICAgICAgICAgICd7XG4nCi0gICAgICAgICAgICAn
ICAgIGludCBmb287XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAgICdUaGlzIHsg
c2hvdWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUgIFt3aGl0ZXNwYWNlL2Jy
YWNlc10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAg
ICAgICAgJ2ZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKylcbicKLSAgICAgICAgICAgICd7XG4n
Ci0gICAgICAgICAgICAnICAgIGludCBmb287XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAgICAg
ICAgICAgICdUaGlzIHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUg
IFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KAotICAgICAgICAgICAgJ3doaWxlICh0cnVlKVxuJwotICAgICAgICAgICAgJ3tcbicK
LSAgICAgICAgICAgICcgICAgaW50IGZvbztcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAg
ICAgICAgJ1RoaXMgeyBzaG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZSAg
W3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCi0gICAgICAgICAgICAnc3dpdGNoICh0eXBlKVxuJwotICAgICAgICAgICAgJ3tcbicK
LSAgICAgICAgICAgICdjYXNlIGZvbzogcmV0dXJuO1xuJwotICAgICAgICAgICAgJ31cbicsCi0g
ICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBs
aW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRp
X2xpbmVfbGludCgKLSAgICAgICAgICAgICdlbHNlIGlmICh0eXBlKVxuJwotICAgICAgICAgICAg
J3tcbicKLSAgICAgICAgICAgICdjYXNlIGZvbzogcmV0dXJuO1xuJwotICAgICAgICAgICAgJ31c
bicsCi0gICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2
aW91cyBsaW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCi0KLSAgICAgICAgIyAzLiBPbmUt
bGluZSBjb250cm9sIGNsYXVzZXMgc2hvdWxkIG5vdCB1c2UgYnJhY2VzIHVubGVzcwotICAgICAg
ICAjICAgIGNvbW1lbnRzIGFyZSBpbmNsdWRlZCBvciBhIHNpbmdsZSBzdGF0ZW1lbnQgc3BhbnMg
bXVsdGlwbGUKLSAgICAgICAgIyAgICBsaW5lcy4KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAotICAgICAgICAgICAgJ2lmICh0cnVlKSB7XG4nCi0gICAgICAgICAgICAnICAg
IGludCBmb287XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAgICdPbmUgbGluZSBj
b250cm9sIGNsYXVzZXMgc2hvdWxkIG5vdCB1c2UgYnJhY2VzLiAgW3doaXRlc3BhY2UvYnJhY2Vz
XSBbNF0nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAg
ICAgICdmb3IgKDsgZm9vOyBiYXIpIHtcbicKLSAgICAgICAgICAgICcgICAgaW50IGZvbztcbicK
LSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAgJ09uZSBsaW5lIGNvbnRyb2wgY2xhdXNl
cyBzaG91bGQgbm90IHVzZSBicmFjZXMuICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2ZvcmVhY2gg
KGZvbywgZm9vcykge1xuJwotICAgICAgICAgICAgJyAgICBpbnQgYmFyO1xuJwotICAgICAgICAg
ICAgJ31cbicsCi0gICAgICAgICAgICAnT25lIGxpbmUgY29udHJvbCBjbGF1c2VzIHNob3VsZCBu
b3QgdXNlIGJyYWNlcy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKLQotICAgICAgICBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnd2hpbGUgKHRydWUpIHtcbicK
LSAgICAgICAgICAgICcgICAgaW50IGZvbztcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAg
ICAgICAgJ09uZSBsaW5lIGNvbnRyb2wgY2xhdXNlcyBzaG91bGQgbm90IHVzZSBicmFjZXMuICBb
d2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KAotICAgICAgICAgICAgJ2lmICh0cnVlKVxuJwotICAgICAgICAgICAgJyAgICBpbnQg
Zm9vO1xuJwotICAgICAgICAgICAgJ2Vsc2Uge1xuJwotICAgICAgICAgICAgJyAgICBpbnQgZm9v
O1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAnT25lIGxpbmUgY29udHJvbCBj
bGF1c2VzIHNob3VsZCBub3QgdXNlIGJyYWNlcy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykK
LQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaWYg
KHRydWUpIHtcbicKLSAgICAgICAgICAgICcgICAgaW50IGZvbztcbicKLSAgICAgICAgICAgICd9
IGVsc2VcbicKLSAgICAgICAgICAgICcgICAgaW50IGZvbztcbicsCi0gICAgICAgICAgICAnT25l
IGxpbmUgY29udHJvbCBjbGF1c2VzIHNob3VsZCBub3QgdXNlIGJyYWNlcy4gIFt3aGl0ZXNwYWNl
L2JyYWNlc10gWzRdJykKLQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0g
ICAgICAgICAgICAnaWYgKHRydWUpIHtcbicKLSAgICAgICAgICAgICcgICAgLy8gU29tZSBjb21t
ZW50XG4nCi0gICAgICAgICAgICAnICAgIGludCBmb287XG4nCi0gICAgICAgICAgICAnfVxuJywK
LSAgICAgICAgICAgICcnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
LSAgICAgICAgICAgICdpZiAodHJ1ZSkge1xuJwotICAgICAgICAgICAgJyAgICBteUZ1bmN0aW9u
KHJlYWxseUxvbmdQYXJhbTEsIHJlYWxseUxvbmdQYXJhbTIsXG4nCi0gICAgICAgICAgICAnICAg
ICAgICAgICAgICAgcmVhbGx5TG9uZ1BhcmFtMyk7XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAg
ICAgICAgICAgICcnKQotCi0gICAgICAgICMgNC4gQ29udHJvbCBjbGF1c2VzIHdpdGhvdXQgYSBi
b2R5IHNob3VsZCB1c2UgZW1wdHkgYnJhY2VzLgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnQoCi0gICAgICAgICAgICAnZm9yICggOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVu
dC0+bmV4dCkgeyB9XG4nLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdmb3IgKCA7IGN1cnJlbnQ7XG4nCi0gICAgICAg
ICAgICAnICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4dCkge31cbicsCi0gICAgICAgICAgICAn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2Zv
ciAoIDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHQpO1xuJywKLSAgICAgICAgICAg
ICdTZW1pY29sb24gZGVmaW5pbmcgZW1wdHkgc3RhdGVtZW50IGZvciB0aGlzIGxvb3AuIFVzZSB7
IH0gaW5zdGVhZC4gIFt3aGl0ZXNwYWNlL3NlbWljb2xvbl0gWzVdJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ3doaWxlICh0cnVlKTtcbicsCi0g
ICAgICAgICAgICAnU2VtaWNvbG9uIGRlZmluaW5nIGVtcHR5IHN0YXRlbWVudCBmb3IgdGhpcyBs
b29wLiBVc2UgeyB9IGluc3RlYWQuICBbd2hpdGVzcGFjZS9zZW1pY29sb25dIFs1XScpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICd9IHdoaWxlICh0
cnVlKTtcbicsCi0gICAgICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0X251bGxfZmFsc2VfemVy
byhzZWxmKToKLSAgICAgICAgIyAxLiBJbiBDKyssIHRoZSBudWxsIHBvaW50ZXIgdmFsdWUgc2hv
dWxkIGJlIHdyaXR0ZW4gYXMgMC4gSW4gQywKLSAgICAgICAgIyAgICBpdCBzaG91bGQgYmUgd3Jp
dHRlbiBhcyBOVUxMLiBJbiBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKywKLSAgICAgICAg
IyAgICBmb2xsb3cgdGhlIGd1aWRlbGluZSBmb3IgQyBvciBDKyssIHJlc3BlY3RpdmVseSwgYnV0
IHVzZSBuaWwgdG8KLSAgICAgICAgIyAgICByZXByZXNlbnQgYSBudWxsIE9iamVjdGl2ZS1DIG9i
amVjdC4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdmdW5jdGlvbkNh
bGwoTlVMTCknLAotICAgICAgICAgICAgJ1VzZSAwIGluc3RlYWQgb2YgTlVMTC4nCi0gICAgICAg
ICAgICAnICBbcmVhZGFiaWxpdHkvbnVsbF0gWzVdJywKLSAgICAgICAgICAgICdmb28uY3BwJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICIvLyBEb24ndCB1c2UgTlVM
TCBpbiBjb21tZW50cyBzaW5jZSBpdCBpc24ndCBpbiBjb2RlLiIsCi0gICAgICAgICAgICAnVXNl
IDAgaW5zdGVhZCBvZiBOVUxMLicKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9udWxsXSBb
NF0nLAotICAgICAgICAgICAgJ2Zvby5jcHAnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAot
ICAgICAgICAgICAgJyJBIHN0cmluZyB3aXRoIE5VTEwiIC8vIGFuZCBhIGNvbW1lbnQgd2l0aCBO
VUxMIGlzIHRyaWNreSB0byBmbGFnIGNvcnJlY3RseSBpbiBjcHBfc3R5bGUuJywKLSAgICAgICAg
ICAgICdVc2UgMCBpbnN0ZWFkIG9mIE5VTEwuJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5
L251bGxdIFs0XScsCi0gICAgICAgICAgICAnZm9vLmNwcCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoCi0gICAgICAgICAgICAnIkEgc3RyaW5nIGNvbnRhaW5pbmcgTlVMTCBpcyBvayInLAot
ICAgICAgICAgICAgJycsCi0gICAgICAgICAgICAnZm9vLmNwcCcpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoCi0gICAgICAgICAgICAnaWYgKGFib3V0TlVMTCknLAotICAgICAgICAgICAgJycs
Ci0gICAgICAgICAgICAnZm9vLmNwcCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAg
ICAgICAgICAnbXlWYXJpYWJsZSA9IE5VTExpZnknLAotICAgICAgICAgICAgJycsCi0gICAgICAg
ICAgICAnZm9vLmNwcCcpCi0gICAgICAgICMgTWFrZSBzdXJlIHRoYXQgdGhlIE5VTEwgY2hlY2sg
ZG9lcyBub3QgYXBwbHkgdG8gQyBhbmQgT2JqZWN0aXZlLUMgZmlsZXMuCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnZnVuY3Rpb25DYWxsKE5VTEwpJywKLSAgICAgICAg
ICAgICcnLAotICAgICAgICAgICAgJ2Zvby5jJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgK
LSAgICAgICAgICAgICdmdW5jdGlvbkNhbGwoTlVMTCknLAotICAgICAgICAgICAgJycsCi0gICAg
ICAgICAgICAnZm9vLm0nKQotCi0gICAgICAgICMgTWFrZSBzdXJlIHRoYXQgdGhlIE5VTEwgY2hl
Y2sgZG9lcyBub3QgYXBwbHkgdG8gZ19vYmplY3Rfe3NldCxnZXR9IGFuZAotICAgICAgICAjIGdf
c3Rye2pvaW4sY29uY2F0fQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAg
J2dfb2JqZWN0X2dldChmb28sICJwcm9wIiwgJmJhciwgTlVMTCk7JywKLSAgICAgICAgICAgICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ2dfb2JqZWN0X3NldChm
b28sICJwcm9wIiwgYmFyLCBOVUxMKTsnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnZ2NoYXIqIHJlc3VsdCA9IGdfc3RyY29uY2F0KCJw
YXJ0MSIsICJwYXJ0MiIsICJwYXJ0MyIsIE5VTEwpOycsCi0gICAgICAgICAgICAnJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdnY2hhciogcmVzdWx0ID0gZ19zdHJj
b25jYXQoInBhcnQxIiwgTlVMTCk7JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KAotICAgICAgICAgICAgJ2djaGFyKiByZXN1bHQgPSBnX3N0cmpvaW4oIiwiLCAi
cGFydDEiLCAicGFydDIiLCAicGFydDMiLCBOVUxMKTsnLAotICAgICAgICAgICAgJycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnZ2NoYXIqIHJlc3VsdCA9IGdfc3Ry
am9pbigiLCIsICJwYXJ0MSIsIE5VTEwpOycsCi0gICAgICAgICAgICAnJykKLQotICAgICAgICAj
IDIuIEMrKyBhbmQgQyBib29sIHZhbHVlcyBzaG91bGQgYmUgd3JpdHRlbiBhcyB0cnVlIGFuZAot
ICAgICAgICAjICAgIGZhbHNlLiBPYmplY3RpdmUtQyBCT09MIHZhbHVlcyBzaG91bGQgYmUgd3Jp
dHRlbiBhcyBZRVMgYW5kIE5PLgotICAgICAgICAjIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLQot
ICAgICAgICAjIDMuIFRlc3RzIGZvciB0cnVlL2ZhbHNlLCBudWxsL25vbi1udWxsLCBhbmQgemVy
by9ub24temVybyBzaG91bGQKLSAgICAgICAgIyAgICBhbGwgYmUgZG9uZSB3aXRob3V0IGVxdWFs
aXR5IGNvbXBhcmlzb25zLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAg
J2lmIChjb3VudCA9PSAwKScsCi0gICAgICAgICAgICAnVGVzdHMgZm9yIHRydWUvZmFsc2UsIG51
bGwvbm9uLW51bGwsIGFuZCB6ZXJvL25vbi16ZXJvIHNob3VsZCBhbGwgYmUgZG9uZSB3aXRob3V0
IGVxdWFsaXR5IGNvbXBhcmlzb25zLicKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jb21w
YXJpc29uX3RvX3plcm9dIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnRfb25lX29mX21h
bnlfZXJyb3JzX3JlKAotICAgICAgICAgICAgJ2lmIChzdHJpbmcgIT0gTlVMTCknLAotICAgICAg
ICAgICAgcidUZXN0cyBmb3IgdHJ1ZS9mYWxzZSwgbnVsbC9ub24tbnVsbCwgYW5kIHplcm8vbm9u
LXplcm8gc2hvdWxkIGFsbCBiZSBkb25lIHdpdGhvdXQgZXF1YWxpdHkgY29tcGFyaXNvbnNcLicp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnaWYgKGNvbmRpdGlvbiA9
PSB0cnVlKScsCi0gICAgICAgICAgICAnVGVzdHMgZm9yIHRydWUvZmFsc2UsIG51bGwvbm9uLW51
bGwsIGFuZCB6ZXJvL25vbi16ZXJvIHNob3VsZCBhbGwgYmUgZG9uZSB3aXRob3V0IGVxdWFsaXR5
IGNvbXBhcmlzb25zLicKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jb21wYXJpc29uX3Rv
X3plcm9dIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnaWYg
KG15VmFyaWFibGUgIT0gLyogV2h5IHdvdWxkIGFueW9uZSBwdXQgYSBjb21tZW50IGhlcmU/ICov
IGZhbHNlKScsCi0gICAgICAgICAgICAnVGVzdHMgZm9yIHRydWUvZmFsc2UsIG51bGwvbm9uLW51
bGwsIGFuZCB6ZXJvL25vbi16ZXJvIHNob3VsZCBhbGwgYmUgZG9uZSB3aXRob3V0IGVxdWFsaXR5
IGNvbXBhcmlzb25zLicKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jb21wYXJpc29uX3Rv
X3plcm9dIFs1XScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdp
ZiAoMCAvKiBUaGlzIGNvbW1lbnQgYWxzbyBsb29rcyBvZGQgdG8gbWUuICovICE9IGFMb25nZXJW
YXJpYWJsZU5hbWUpJywKLSAgICAgICAgICAgICdUZXN0cyBmb3IgdHJ1ZS9mYWxzZSwgbnVsbC9u
b24tbnVsbCwgYW5kIHplcm8vbm9uLXplcm8gc2hvdWxkIGFsbCBiZSBkb25lIHdpdGhvdXQgZXF1
YWxpdHkgY29tcGFyaXNvbnMuJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NvbXBhcmlz
b25fdG9femVyb10gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludF9vbmVfb2ZfbWFueV9l
cnJvcnNfcmUoCi0gICAgICAgICAgICAnaWYgKE5VTEwgPT0gdGhpc01heUJlTnVsbCknLAotICAg
ICAgICAgICAgcidUZXN0cyBmb3IgdHJ1ZS9mYWxzZSwgbnVsbC9ub24tbnVsbCwgYW5kIHplcm8v
bm9uLXplcm8gc2hvdWxkIGFsbCBiZSBkb25lIHdpdGhvdXQgZXF1YWxpdHkgY29tcGFyaXNvbnNc
LicpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnaWYgKHRydWUgIT0g
YW5vdGhlckNvbmRpdGlvbiknLAotICAgICAgICAgICAgJ1Rlc3RzIGZvciB0cnVlL2ZhbHNlLCBu
dWxsL25vbi1udWxsLCBhbmQgemVyby9ub24temVybyBzaG91bGQgYWxsIGJlIGRvbmUgd2l0aG91
dCBlcXVhbGl0eSBjb21wYXJpc29ucy4nCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY29t
cGFyaXNvbl90b196ZXJvXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAg
ICAgICAgJ2lmIChmYWxzZSA9PSBteUJvb2xWYWx1ZSknLAotICAgICAgICAgICAgJ1Rlc3RzIGZv
ciB0cnVlL2ZhbHNlLCBudWxsL25vbi1udWxsLCBhbmQgemVyby9ub24temVybyBzaG91bGQgYWxs
IGJlIGRvbmUgd2l0aG91dCBlcXVhbGl0eSBjb21wYXJpc29ucy4nCi0gICAgICAgICAgICAnICBb
cmVhZGFiaWxpdHkvY29tcGFyaXNvbl90b196ZXJvXSBbNV0nKQotCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoCi0gICAgICAgICAgICAnaWYgKGZvbnRUeXBlID09IHRydWVUeXBlKScsCi0gICAg
ICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdpZiAo
b3RoZXJ0cnVlID09IGZvbnRUeXBlKScsCi0gICAgICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0
X3VzaW5nX3N0ZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAg
ICd1c2luZyBzdGQ6Om1pbjsnLAotICAgICAgICAgICAgIlVzZSAndXNpbmcgbmFtZXNwYWNlIHN0
ZDsnIGluc3RlYWQgb2YgJ3VzaW5nIHN0ZDo6bWluOycuIgotICAgICAgICAgICAgIiAgW2J1aWxk
L3VzaW5nX3N0ZF0gWzRdIiwKLSAgICAgICAgICAgICdmb28uY3BwJykKLQotICAgIGRlZiB0ZXN0
X21heF9tYWNybyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAg
ICdpbnQgaSA9IE1BWCgwLCAxKTsnLAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICAnZm9v
LmMnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnaW50IGkgPSBN
QVgoMCwgMSk7JywKLSAgICAgICAgICAgICdVc2Ugc3RkOjptYXgoKSBvciBzdGQ6Om1heDx0eXBl
PigpIGluc3RlYWQgb2YgdGhlIE1BWCgpIG1hY3JvLicKLSAgICAgICAgICAgICcgIFtydW50aW1l
L21heF9taW5fbWFjcm9zXSBbNF0nLAotICAgICAgICAgICAgJ2Zvby5jcHAnKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnaW5saW5lIGludCBmb28oKSB7IHJldHVy
biBNQVgoMCwgMSk7IH0nLAotICAgICAgICAgICAgJ1VzZSBzdGQ6Om1heCgpIG9yIHN0ZDo6bWF4
PHR5cGU+KCkgaW5zdGVhZCBvZiB0aGUgTUFYKCkgbWFjcm8uJwotICAgICAgICAgICAgJyAgW3J1
bnRpbWUvbWF4X21pbl9tYWNyb3NdIFs0XScsCi0gICAgICAgICAgICAnZm9vLmgnKQotCi0gICAg
ZGVmIHRlc3RfbWluX21hY3JvKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAg
ICAgICAgICAgJ2ludCBpID0gTUlOKDAsIDEpOycsCi0gICAgICAgICAgICAnJywKLSAgICAgICAg
ICAgICdmb28uYycpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdp
bnQgaSA9IE1JTigwLCAxKTsnLAotICAgICAgICAgICAgJ1VzZSBzdGQ6Om1pbigpIG9yIHN0ZDo6
bWluPHR5cGU+KCkgaW5zdGVhZCBvZiB0aGUgTUlOKCkgbWFjcm8uJwotICAgICAgICAgICAgJyAg
W3J1bnRpbWUvbWF4X21pbl9tYWNyb3NdIFs0XScsCi0gICAgICAgICAgICAnZm9vLmNwcCcpCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdpbmxpbmUgaW50IGZvbygp
IHsgcmV0dXJuIE1JTigwLCAxKTsgfScsCi0gICAgICAgICAgICAnVXNlIHN0ZDo6bWluKCkgb3Ig
c3RkOjptaW48dHlwZT4oKSBpbnN0ZWFkIG9mIHRoZSBNSU4oKSBtYWNyby4nCi0gICAgICAgICAg
ICAnICBbcnVudGltZS9tYXhfbWluX21hY3Jvc10gWzRdJywKLSAgICAgICAgICAgICdmb28uaCcp
Ci0KLSAgICBkZWYgdGVzdF9uYW1lcyhzZWxmKToKLSAgICAgICAgbmFtZV9lcnJvcl9tZXNzYWdl
ID0gIiBpcyBpbmNvcnJlY3RseSBuYW1lZC4gRG9uJ3QgdXNlIHVuZGVyc2NvcmVzIGluIHlvdXIg
aWRlbnRpZmllciBuYW1lcy4gIFtyZWFkYWJpbGl0eS9uYW1pbmddIFs0XSIKLQotICAgICAgICAj
IEJhc2ljIGNhc2VzIGZyb20gV2ViS2l0IHN0eWxlIGd1aWRlLgotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdzdHJ1Y3QgRGF0YTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc2l6
ZV90IGJ1ZmZlclNpemU7JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NsYXNzIEhU
TUxEb2N1bWVudDsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnU3RyaW5nIG1pbWVU
eXBlKCk7JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3NpemVfdCBidWZmZXJfc2l6
ZTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdidWZmZXJfc2l6ZScgKyBuYW1lX2Vycm9y
X21lc3NhZ2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3Nob3J0IG1fbGVuZ3RoOycsICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzaG9ydCBfbGVuZ3RoOycsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgJ19sZW5ndGgnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdzaG9ydCBsZW5ndGhfOycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJ2xlbmd0aF8nICsgbmFtZV9lcnJvcl9tZXNzYWdlKQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCd1bnNpZ25lZCBfbGVuZ3RoOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ19sZW5n
dGgnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd1bnNp
Z25lZCBpbnQgX2xlbmd0aDsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdfbGVuZ3RoJyAr
IG5hbWVfZXJyb3JfbWVzc2FnZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndW5zaWduZWQg
bG9uZyBsb25nIF9sZW5ndGg7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnX2xlbmd0aCcg
KyBuYW1lX2Vycm9yX21lc3NhZ2UpCi0KLSAgICAgICAgIyBQb2ludGVycywgcmVmZXJlbmNlcywg
ZnVuY3Rpb25zLCB0ZW1wbGF0ZXMsIGFuZCBhZGplY3RpdmVzLgotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdjaGFyKiB1bmRlcl9zY29yZTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICd1
bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2NvbnN0IGludCBVTkRFUl9TQ09SRTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdV
TkRFUl9TQ09SRScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciBjb25zdCYgY29uc3QgdW5kZXJfc2NvcmU7JywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNz
YWdlKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHVu
ZGVyX3Njb3JlOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5h
bWVfZXJyb3JfbWVzc2FnZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGZ1bmNfbmFt
ZSgpOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmNfbmFtZScgKyBuYW1lX2Vycm9y
X21lc3NhZ2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZlB0cjxSZW5kZXJPYmplY3Qq
PiB1bmRlcl9zY29yZTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScg
KyBuYW1lX2Vycm9yX21lc3NhZ2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dURjo6VmVj
dG9yPFdURjo6UmVmUHRyPGNvbnN0IFJlbmRlck9iamVjdCogY29uc3Q+ID4gdW5kZXJfc2NvcmU7
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9t
ZXNzYWdlKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgdW5kZXJfc2NvcmVbXTsnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3Nh
Z2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cnVjdCBkaXJlbnQqIHVuZGVyX3Njb3Jl
OycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3Jf
bWVzc2FnZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnbG9uZyB1bmRlcl9zY29yZTsnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3Nh
Z2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2xvbmcgbG9uZyB1bmRlcl9zY29yZTsnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3Nh
Z2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2xvbmcgZG91YmxlIHVuZGVyX3Njb3JlOycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVz
c2FnZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnbG9uZyBsb25nIGludCB1bmRlcl9zY29y
ZTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9y
X21lc3NhZ2UpCi0KLSAgICAgICAgIyBEZWNsYXJhdGlvbnMgaW4gY29udHJvbCBzdGF0ZW1lbnQu
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChpbnQgdW5kZXJfc2NvcmUgPSA0Mikgeycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVz
c2FnZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZWxzZSBpZiAoaW50IHVuZGVyX3Njb3Jl
ID0gNDIpIHsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1l
X2Vycm9yX21lc3NhZ2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoaW50IHVuZGVy
X3Njb3JlID0gNDI7IGNvbmQ7IGkrKykgeycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3Vu
ZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnd2hpbGUgKGZvbyAmIHVuZGVyX3Njb3JlID0gYmFyKSB7JywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdmb3IgKGZvbyAqIHVuZGVyX3Njb3JlID0gcDsgY29uZDsgaSsrKSB7JywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNz
YWdlKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKGZvbyAqIHVuZGVyX3Njb3JlOyBj
b25kOyBpKyspIHsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBu
YW1lX2Vycm9yX21lc3NhZ2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3doaWxlIChmb28g
JiB2YWx1ZV9pbl90aGlyZHBhcnR5X2xpYnJhcnkpIHsnLCAnJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnd2hpbGUgKGZvbyAqIHZhbHVlX2luX3RoaXJkcGFydHlfbGlicmFyeSkgeycsICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAobWxpICYmIFNfT0sgPT0gbWxpLT5mb28o
KSkgeycsICcnKQotCi0gICAgICAgICMgTW9yZSBtZW1iZXIgdmFyaWFibGVzIGFuZCBmdW5jdGlv
bnMuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBTb21lQ2xhc3M6OnNfdmFsaWROYW1l
JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBtX3VuZGVyX3Njb3JlOycsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJ21fdW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNz
YWdlKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgU29tZUNsYXNzOjpzX3VuZGVyX3Nj
b3JlID0gMDsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdTb21lQ2xhc3M6OnNfdW5kZXJf
c2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdp
bnQgU29tZUNsYXNzOjp1bmRlcl9zY29yZSA9IDA7JywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAnU29tZUNsYXNzOjp1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCi0KLSAgICAg
ICAgIyBPdGhlciBzdGF0ZW1lbnRzLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdyZXR1cm4g
SU5UX01BWDsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgncmV0dXJuX3QgdW5kZXJf
c2NvcmU7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9l
cnJvcl9tZXNzYWdlKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdnb3RvIHVuZGVyX3Njb3Jl
OycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3Jf
bWVzc2FnZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZGVsZXRlIHN0YXRpY19jYXN0PEZv
byo+KHApOycsICcnKQotCi0gICAgICAgICMgTXVsdGlwbGUgdmFyaWFibGVzIGluIG9uZSBsaW5l
LgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIG15RnVuY3Rpb24oaW50IHZhcmlhYmxl
MSwgaW50IGFub3RoZXJfdmFyaWFibGUpOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2Fu
b3RoZXJfdmFyaWFibGUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdpbnQgdmFyaWFibGUxLCBhbm90aGVyX3ZhcmlhYmxlOycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJ2Fub3RoZXJfdmFyaWFibGUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgZmlyc3RfdmFyaWFibGUsIHNlY29uZFZhcmlhYmxl
OycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0X3ZhcmlhYmxlJyArIG5hbWVfZXJy
b3JfbWVzc2FnZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCBteV9mdW5jdGlvbihp
bnQgdmFyaWFibGVfMSwgaW50IHZhcmlhYmxlXzIpOycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgWydteV9mdW5jdGlvbicgKyBuYW1lX2Vycm9yX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICd2YXJpYWJsZV8xJyArIG5hbWVfZXJyb3JfbWVzc2FnZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3ZhcmlhYmxlXzInICsgbmFtZV9lcnJvcl9tZXNzYWdlXSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChpbnQgdmFyaWFibGVfMSwgdmFyaWFibGVfMjs7KSB7
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ3ZhcmlhYmxlXzEnICsgbmFtZV9lcnJvcl9t
ZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVfMicgKyBuYW1lX2Vy
cm9yX21lc3NhZ2VdKQotCi0gICAgICAgICMgVGhlcmUgaXMgYW4gZXhjZXB0aW9uIGZvciBvcCBj
b2RlIGZ1bmN0aW9ucyBidXQgb25seSBpbiB0aGUgSmF2YVNjcmlwdENvcmUgZGlyZWN0b3J5Lgot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIHRoaXNfb3BfY29kZShpbnQgdmFyMSwgaW50
IHZhcjIpJywgJycsICdKYXZhU2NyaXB0Q29yZS9mb28uY3BwJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgndm9pZCB0aGlzX29wX2NvZGUoaW50IHZhcjEsIGludCB2YXIyKScsICd0aGlzX29w
X2NvZGUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQotCi0gICAgICAgICMgR09iamVjdCByZXF1aXJl
cyBjZXJ0YWluIG1hZ2ljYWwgbmFtZXMgaW4gY2xhc3MgZGVjbGFyYXRpb25zLgotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCd2b2lkIHdlYmtpdF9kb21fb2JqZWN0X2luaXQoKTsnLCAnJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCB3ZWJraXRfZG9tX29iamVjdF9jbGFzc19pbml0
KCk7JywgJycpCi0KLSAgICAgICAgIyBUaGVyZSBpcyBhbiBleGNlcHRpb24gZm9yIHNvbWUgdW5p
dCB0ZXN0cyB0aGF0IGJlZ2luIHdpdGggInRzdF8iLgotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCd2b2lkIHRzdF9RV2ViRnJhbWU6OmFycmF5T2JqZWN0RW51bWVyYWJsZShpbnQgdmFyMSwgaW50
IHZhcjIpJywgJycpCi0KLSAgICAgICAgIyBUaGUgUXQgQVBJIHVzZXMgbmFtZXMgdGhhdCBiZWdp
biB3aXRoICJxdF8iLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIFFURnJhbWU6OnF0
X2RydF9pc19hd2Vzb21lKGludCB2YXIxLCBpbnQgdmFyMiknLCAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgndm9pZCBxdF9kcnRfaXNfYXdlc29tZShpbnQgdmFyMSwgaW50IHZhcjIpOycs
ICcnKQotCi0gICAgICAgICMgY29uc3RfaXRlcmF0b3IgaXMgYWxsb3dlZCBhcyB3ZWxsLgotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCd0eXBlZGVmIFZlY3RvclR5cGU6OmNvbnN0X2l0ZXJhdG9y
IGNvbnN0X2l0ZXJhdG9yOycsICcnKQotCi0gICAgICAgICMgQml0ZmllbGRzLgotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCd1bnNpZ25lZCBfZmlsbFJ1bGUgOiAxOycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJ19maWxsUnVsZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCi0KLQotICAgIGRl
ZiB0ZXN0X2NvbW1lbnRzKHNlbGYpOgotICAgICAgICAjIEEgY29tbWVudCBhdCB0aGUgYmVnaW5u
aW5nIG9mIGEgbGluZSBpcyBvay4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy8gY29tbWVu
dCcsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICAgLy8gY29tbWVudCcsICcnKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnT25lIHNwYWNlIGJlZm9yZSBlbmQgb2YgbGluZSBjb21t
ZW50cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9jb21tZW50c10g
WzVdJykKLQotICAgIGRlZiB0ZXN0X290aGVyKHNlbGYpOgotICAgICAgICAjIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcy4KLSAgICAgICAgcGFzcwotCi0KLWNsYXNzIENwcFByb2Nlc3NvclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdHMgQ3BwUHJvY2Vzc29yIGNsYXNzLiIiIgot
Ci0gICAgZGVmIG1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKHNlbGYpOgotICAgICAgICBwYXNzCi0K
LSAgICBkZWYgX3Byb2Nlc3NvcihzZWxmKToKLSAgICAgICAgcmV0dXJuIENwcFByb2Nlc3Nvcigi
Zm9vIiwgImgiLCBzZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yLCAzKQotCi0gICAgZGVmIHRl
c3RfaW5pdChzZWxmKToKLSAgICAgICAgIiIiVGVzdCBfX2luaXRfXyBjb25zdHJ1Y3Rvci4iIiIK
LSAgICAgICAgcHJvY2Vzc29yID0gc2VsZi5fcHJvY2Vzc29yKCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMocHJvY2Vzc29yLmZpbGVfZXh0ZW5zaW9uLCAiaCIpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHByb2Nlc3Nvci5maWxlX3BhdGgsICJmb28iKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhwcm9jZXNzb3IuaGFuZGxlX3N0eWxlX2Vycm9yLCBzZWxmLm1vY2tfaGFuZGxlX3N0
eWxlX2Vycm9yKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IubWluX2NvbmZp
ZGVuY2UsIDMpCi0KLSAgICBkZWYgdGVzdF9lcShzZWxmKToKLSAgICAgICAgIiIiVGVzdCBfX2Vx
X18gZXF1YWxpdHkgZnVuY3Rpb24uIiIiCi0gICAgICAgIHByb2Nlc3NvcjEgPSBzZWxmLl9wcm9j
ZXNzb3IoKQotICAgICAgICBwcm9jZXNzb3IyID0gc2VsZi5fcHJvY2Vzc29yKCkKLQotICAgICAg
ICAjID09IGNhbGxzIF9fZXFfXy4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2Nlc3NvcjEg
PT0gcHJvY2Vzc29yMikKLQotICAgICAgICBkZWYgbW9ja19oYW5kbGVfc3R5bGVfZXJyb3IyKHNl
bGYpOgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICMgVmVyaWZ5IHRoYXQgYSBkaWZmZXJl
bmNlIGluIGFueSBhcmd1bWVudCBjYXVzZSBlcXVhbGl0eSB0byBmYWlsLgotICAgICAgICBwcm9j
ZXNzb3IgPSBDcHBQcm9jZXNzb3IoImZvbyIsICJoIiwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9l
cnJvciwgMykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwcm9jZXNzb3IgPT0gQ3BwUHJvY2Vz
c29yKCJiYXIiLCAiaCIsIHNlbGYubW9ja19oYW5kbGVfc3R5bGVfZXJyb3IsIDMpKQotICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKHByb2Nlc3NvciA9PSBDcHBQcm9jZXNzb3IoImZvbyIsICJjIiwg
c2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwgMykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UocHJvY2Vzc29yID09IENwcFByb2Nlc3NvcigiZm9vIiwgImgiLCBtb2NrX2hhbmRsZV9zdHls
ZV9lcnJvcjIsIDMpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByb2Nlc3NvciA9PSBDcHBQ
cm9jZXNzb3IoImZvbyIsICJoIiwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwgNCkpCi0K
LSAgICBkZWYgdGVzdF9uZShzZWxmKToKLSAgICAgICAgIiIiVGVzdCBfX25lX18gaW5lcXVhbGl0
eSBmdW5jdGlvbi4iIiIKLSAgICAgICAgcHJvY2Vzc29yMSA9IHNlbGYuX3Byb2Nlc3NvcigpCi0g
ICAgICAgIHByb2Nlc3NvcjIgPSBzZWxmLl9wcm9jZXNzb3IoKQotCi0gICAgICAgICMgIT0gY2Fs
bHMgX19uZV9fLgotICAgICAgICAjIEJ5IGRlZmF1bHQsIF9fbmVfXyBhbHdheXMgcmV0dXJucyB0
cnVlIG9uIGRpZmZlcmVudCBvYmplY3RzLgotICAgICAgICAjIFRodXMsIGp1c3QgY2hlY2sgdGhl
IGRpc3Rpbmd1aXNoaW5nIGNhc2UgdG8gdmVyaWZ5IHRoYXQgdGhlCi0gICAgICAgICMgY29kZSBk
ZWZpbmVzIF9fbmVfXy4KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwcm9jZXNzb3IxICE9IHBy
b2Nlc3NvcjIpCi0KLQotZGVmIHRlYXJEb3duKCk6Ci0gICAgIiIiQSBnbG9iYWwgY2hlY2sgdG8g
bWFrZSBzdXJlIGFsbCBlcnJvci1jYXRlZ29yaWVzIGhhdmUgYmVlbiB0ZXN0ZWQuCi0KLSAgICBU
aGUgbWFpbiB0ZWFyRG93bigpIHJvdXRpbmUgaXMgdGhlIG9ubHkgY29kZSB3ZSBjYW4gZ3VhcmFu
dGVlIHdpbGwgYmUKLSAgICBydW4gYWZ0ZXIgYWxsIG90aGVyIHRlc3RzIGhhdmUgYmVlbiBleGVj
dXRlZC4KLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIGlmIF9ydW5fdmVyaWZ5YWxsY2F0ZWdv
cmllc3NlZW46Ci0gICAgICAgICAgICBFcnJvckNvbGxlY3RvcihOb25lKS52ZXJpZnlfYWxsX2Nh
dGVnb3JpZXNfYXJlX3NlZW4oKQotICAgIGV4Y2VwdCBOYW1lRXJyb3I6Ci0gICAgICAgICMgSWYg
bm9ib2R5IHNldCB0aGUgZ2xvYmFsIF9ydW5fdmVyaWZ5YWxsY2F0ZWdvcmllc3NlZW4sIHRoZW4K
LSAgICAgICAgIyB3ZSBhc3N1bWUgd2Ugc2hvdWxkbid0IHJ1biB0aGUgdGVzdAotICAgICAgICBw
YXNzCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgaW1wb3J0IHN5cwotICAgICMg
V2UgZG9uJ3Qgd2FudCB0byBydW4gdGhlIHZlcmlmeV9hbGxfY2F0ZWdvcmllc19hcmVfc2Vlbigp
IHRlc3QgdW5sZXNzCi0gICAgIyB3ZSdyZSBydW5uaW5nIHRoZSBmdWxsIHRlc3Qgc3VpdGU6IGlm
IHdlIG9ubHkgcnVuIG9uZSB0ZXN0LAotICAgICMgb2J2aW91c2x5IHdlJ3JlIG5vdCBnb2luZyB0
byBzZWUgYWxsIHRoZSBlcnJvciBjYXRlZ29yaWVzLiAgU28gd2UKLSAgICAjIG9ubHkgcnVuIHZl
cmlmeV9hbGxfY2F0ZWdvcmllc19hcmVfc2VlbigpIHdoZW4gbm8gY29tbWFuZGxpbmUgZmxhZ3MK
LSAgICAjIGFyZSBwYXNzZWQgaW4uCi0gICAgZ2xvYmFsIF9ydW5fdmVyaWZ5YWxsY2F0ZWdvcmll
c3NlZW4KLSAgICBfcnVuX3ZlcmlmeWFsbGNhdGVnb3JpZXNzZWVuID0gKGxlbihzeXMuYXJndikg
PT0gMSkKLQotICAgIHVuaXR0ZXN0Lm1haW4oKQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL3B5dGhvbi5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvcHl0aG9uLnB5CShyZXZpc2lv
biA1ODI1MSkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29y
cy9weXRob24ucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNTYgKzAsMCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJTdXBwb3J0cyBjaGVja2luZyBX
ZWJLaXQgc3R5bGUgaW4gUHl0aG9uIGZpbGVzLiIiIgotCi1mcm9tIC4uLnN0eWxlX3JlZmVyZW5j
ZXMgaW1wb3J0IHBlcDgKLQotCi1jbGFzcyBQeXRob25Qcm9jZXNzb3Iob2JqZWN0KToKLQotICAg
ICIiIlByb2Nlc3NlcyB0ZXh0IGxpbmVzIGZvciBjaGVja2luZyBzdHlsZS4iIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcik6Ci0gICAgICAg
IHNlbGYuX2ZpbGVfcGF0aCA9IGZpbGVfcGF0aAotICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVf
ZXJyb3IgPSBoYW5kbGVfc3R5bGVfZXJyb3IKLQotICAgIGRlZiBwcm9jZXNzKHNlbGYsIGxpbmVz
KToKLSAgICAgICAgIyBJbml0aWFsaXplIHBlcDgub3B0aW9ucywgd2hpY2ggaXMgbmVjZXNzYXJ5
IGZvcgotICAgICAgICAjIENoZWNrZXIuY2hlY2tfYWxsKCkgdG8gZXhlY3V0ZS4KLSAgICAgICAg
cGVwOC5wcm9jZXNzX29wdGlvbnMoYXJnbGlzdD1bc2VsZi5fZmlsZV9wYXRoXSkKLQotICAgICAg
ICBjaGVja2VyID0gcGVwOC5DaGVja2VyKHNlbGYuX2ZpbGVfcGF0aCkKLQotICAgICAgICBkZWYg
X3BlcDhfaGFuZGxlX2Vycm9yKGxpbmVfbnVtYmVyLCBvZmZzZXQsIHRleHQsIGNoZWNrKToKLSAg
ICAgICAgICAgICMgRklYTUU6IEluY29ycG9yYXRlIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGludG8g
dGhlIGVycm9yIG91dHB1dC4KLSAgICAgICAgICAgICMgICAgICAgIFRoaXMgd2lsbCByZXF1aXJl
IHVwZGF0aW5nIHRoZSBlcnJvciBoYW5kbGVyIF9fY2FsbF9fCi0gICAgICAgICAgICAjICAgICAg
ICBzaWduYXR1cmUgdG8gaW5jbHVkZSBhbiBvcHRpb25hbCAib2Zmc2V0IiBwYXJhbWV0ZXIuCi0g
ICAgICAgICAgICBwZXA4X2NvZGUgPSB0ZXh0Wzo0XQotICAgICAgICAgICAgcGVwOF9tZXNzYWdl
ID0gdGV4dFs1Ol0KLQotICAgICAgICAgICAgY2F0ZWdvcnkgPSAicGVwOC8iICsgcGVwOF9jb2Rl
Ci0KLSAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvcihsaW5lX251bWJlciwgY2F0
ZWdvcnksIDUsIHBlcDhfbWVzc2FnZSkKLQotICAgICAgICBjaGVja2VyLnJlcG9ydF9lcnJvciA9
IF9wZXA4X2hhbmRsZV9lcnJvcgotCi0gICAgICAgIGVycm9ycyA9IGNoZWNrZXIuY2hlY2tfYWxs
KCkKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9w
eXRob25fdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9wcm9jZXNzb3JzL3B5dGhvbl91bml0dGVzdC5weQkocmV2aXNpb24gNTgyNTEp
CisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvcHl0aG9u
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYyICswLDAgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDEwIENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVW5pdCB0ZXN0cyBmb3IgcHl0
aG9uLnB5LiIiIgotCi1pbXBvcnQgb3MKLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIHB5dGhvbiBp
bXBvcnQgUHl0aG9uUHJvY2Vzc29yCi0KLQotY2xhc3MgUHl0aG9uUHJvY2Vzc29yVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0cyB0aGUgUHl0aG9uUHJvY2Vzc29yIGNsYXNz
LiIiIgotCi0gICAgZGVmIHRlc3RfaW5pdChzZWxmKToKLSAgICAgICAgIiIiVGVzdCBfX2luaXRf
XygpIG1ldGhvZC4iIiIKLSAgICAgICAgZGVmIF9tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcihzZWxm
KToKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBwcm9jZXNzb3IgPSBQeXRob25Qcm9jZXNz
b3IoImZvby50eHQiLCBfbW9ja19oYW5kbGVfc3R5bGVfZXJyb3IpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHByb2Nlc3Nvci5fZmlsZV9wYXRoLCAiZm9vLnR4dCIpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5faGFuZGxlX3N0eWxlX2Vycm9yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBfbW9ja19oYW5kbGVfc3R5bGVfZXJyb3IpCi0KLSAgICBkZWYgdGVzdF9w
cm9jZXNzKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHByb2Nlc3MoKSBtZXRob2QuIiIiCi0gICAg
ICAgIGVycm9ycyA9IFtdCi0KLSAgICAgICAgZGVmIF9tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcihs
aW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZSk6Ci0gICAgICAgICAgICBlcnJvciA9IChsaW5lX251bWJl
ciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpCi0gICAgICAgICAgICBlcnJvcnMuYXBw
ZW5kKGVycm9yKQotCi0gICAgICAgIGN1cnJlbnRfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmls
ZV9fKQotICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oY3VycmVudF9kaXIsICJweXRo
b25fdW5pdHRlc3RfaW5wdXQucHkiKQotCi0gICAgICAgIHByb2Nlc3NvciA9IFB5dGhvblByb2Nl
c3NvcihmaWxlX3BhdGgsIF9tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcikKLSAgICAgICAgcHJvY2Vz
c29yLnByb2Nlc3MobGluZXM9W10pCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGVy
cm9ycyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGVycm9yc1swXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgKDIsICJwZXA4L1cyOTEiLCA1LCAidHJhaWxpbmcgd2hpdGVzcGFj
ZSIpKQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3Jz
L3B5dGhvbl91bml0dGVzdF9pbnB1dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvcHl0aG9uX3VuaXR0ZXN0X2lucHV0LnB5CShy
ZXZpc2lvbiA1ODI1MSkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJv
Y2Vzc29ycy9weXRob25fdW5pdHRlc3RfaW5wdXQucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsMiAr
MCwwIEBACi0jIFRoaXMgZmlsZSBpcyBzYW1wbGUgaW5wdXQgZm9yIHB5dGhvbl91bml0dGVzdC5w
eSBhbmQgaW5jbHVkZXMgYSBzaW5nbGUKLSMgZXJyb3Igd2hpY2ggaXMgYW4gZXh0cmEgc3BhY2Ug
YXQgdGhlIGVuZCBvZiB0aGlzIGxpbmUuIApJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9wcm9jZXNzb3JzL3RleHQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL3RleHQucHkJKHJldmlzaW9uIDU4MjUx
KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL3RleHQu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNTYgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDEwIENo
cmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LSIiIkNoZWNrcyBXZWJLaXQgc3R5bGUgZm9yIHRleHQgZmlsZXMuIiIiCi0KLQotY2xhc3MgVGV4
dFByb2Nlc3NvcihvYmplY3QpOgotCi0gICAgIiIiUHJvY2Vzc2VzIHRleHQgbGluZXMgZm9yIGNo
ZWNraW5nIHN0eWxlLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfcGF0aCwgaGFu
ZGxlX3N0eWxlX2Vycm9yKToKLSAgICAgICAgc2VsZi5maWxlX3BhdGggPSBmaWxlX3BhdGgKLSAg
ICAgICAgc2VsZi5oYW5kbGVfc3R5bGVfZXJyb3IgPSBoYW5kbGVfc3R5bGVfZXJyb3IKLQotICAg
IGRlZiBwcm9jZXNzKHNlbGYsIGxpbmVzKToKLSAgICAgICAgbGluZXMgPSAoWyIvLyBhZGp1c3Qg
bGluZSBudW1iZXJzIHRvIG1ha2UgdGhlIGZpcnN0IGxpbmUgMS4iXSArIGxpbmVzKQotCi0gICAg
ICAgICMgRklYTUU6IHNoYXJlIHdpdGggY3BwX3N0eWxlLgotICAgICAgICBmb3IgbGluZV9udW1i
ZXIsIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToKLSAgICAgICAgICAgIGlmICJcdCIgaW4gbGlu
ZToKLSAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9zdHlsZV9lcnJvcihsaW5lX251bWJlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2hpdGVzcGFjZS90YWIi
LCA1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMaW5lIGNvbnRh
aW5zIHRhYiBjaGFyYWN0ZXIuIikKLQotCi0jIEZJWE1FOiBSZW1vdmUgdGhpcyBmdW5jdGlvbiAo
cmVxdWlyZXMgcmVmYWN0b3JpbmcgdW5pdCB0ZXN0cykuCi1kZWYgcHJvY2Vzc19maWxlX2RhdGEo
ZmlsZW5hbWUsIGxpbmVzLCBlcnJvcik6Ci0gICAgcHJvY2Vzc29yID0gVGV4dFByb2Nlc3Nvcihm
aWxlbmFtZSwgZXJyb3IpCi0gICAgcHJvY2Vzc29yLnByb2Nlc3MobGluZXMpCi0KSW5kZXg6IFdl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy90ZXh0X3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJv
Y2Vzc29ycy90ZXh0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA1ODI1MSkKKysrIFdlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy90ZXh0X3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDk0ICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0jIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotIiIiVW5pdCB0ZXN0IGZvciB0ZXh0X3N0eWxlLnB5LiIiIgotCi1pbXBvcnQgdW5p
dHRlc3QKLQotaW1wb3J0IHRleHQgYXMgdGV4dF9zdHlsZQotZnJvbSB0ZXh0IGltcG9ydCBUZXh0
UHJvY2Vzc29yCi0KLWNsYXNzIFRleHRTdHlsZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToK
LSAgICAiIiJUZXN0Q2FzZSBmb3IgdGV4dF9zdHlsZS5weSIiIgotCi0gICAgZGVmIGFzc2VydE5v
RXJyb3Ioc2VsZiwgbGluZXMpOgotICAgICAgICAiIiJBc3NlcnRzIHRoYXQgdGhlIHNwZWNpZmll
ZCBsaW5lcyBoYXMgbm8gZXJyb3JzLiIiIgotICAgICAgICBzZWxmLmhhZF9lcnJvciA9IEZhbHNl
Ci0KLSAgICAgICAgZGVmIGVycm9yX2Zvcl90ZXN0KGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29u
ZmlkZW5jZSwgbWVzc2FnZSk6Ci0gICAgICAgICAgICAiIiJSZWNvcmRzIGlmIGFuIGVycm9yIG9j
Y3Vycy4iIiIKLSAgICAgICAgICAgIHNlbGYuaGFkX2Vycm9yID0gVHJ1ZQotCi0gICAgICAgIHRl
eHRfc3R5bGUucHJvY2Vzc19maWxlX2RhdGEoJycsIGxpbmVzLCBlcnJvcl9mb3JfdGVzdCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRfKG5vdCBzZWxmLmhhZF9lcnJvciwgJyVzIHNob3VsZCBub3QgaGF2
ZSBhbnkgZXJyb3JzLicgJSBsaW5lcykKLQotICAgIGRlZiBhc3NlcnRFcnJvcihzZWxmLCBsaW5l
cywgZXhwZWN0ZWRfbGluZV9udW1iZXIpOgotICAgICAgICAiIiJBc3NlcnRzIHRoYXQgdGhlIHNw
ZWNpZmllZCBsaW5lcyBoYXMgYW4gZXJyb3IuIiIiCi0gICAgICAgIHNlbGYuaGFkX2Vycm9yID0g
RmFsc2UKLQotICAgICAgICBkZWYgZXJyb3JfZm9yX3Rlc3QobGluZV9udW1iZXIsIGNhdGVnb3J5
LCBjb25maWRlbmNlLCBtZXNzYWdlKToKLSAgICAgICAgICAgICIiIkNoZWNrcyBpZiB0aGUgZXhw
ZWN0ZWQgZXJyb3Igb2NjdXJzLiIiIgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhw
ZWN0ZWRfbGluZV9udW1iZXIsIGxpbmVfbnVtYmVyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoJ3doaXRlc3BhY2UvdGFiJywgY2F0ZWdvcnkpCi0gICAgICAgICAgICBzZWxmLmhhZF9l
cnJvciA9IFRydWUKLQotICAgICAgICB0ZXh0X3N0eWxlLnByb2Nlc3NfZmlsZV9kYXRhKCcnLCBs
aW5lcywgZXJyb3JfZm9yX3Rlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0XyhzZWxmLmhhZF9lcnJv
ciwgJyVzIHNob3VsZCBoYXZlIGFuIGVycm9yIFt3aGl0ZXNwYWNlL3RhYl0uJyAlIGxpbmVzKQot
Ci0KLSAgICBkZWYgdGVzdF9ub19lcnJvcihzZWxmKToKLSAgICAgICAgIiIiVGVzdHMgZm9yIG5v
IGVycm9yIGNhc2VzLiIiIgotICAgICAgICBzZWxmLmFzc2VydE5vRXJyb3IoWycnXSkKLSAgICAg
ICAgc2VsZi5hc3NlcnROb0Vycm9yKFsnYWJjIGRlZicsICdnZ2cnXSkKLQotCi0gICAgZGVmIHRl
c3RfZXJyb3Ioc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIGZvciBlcnJvciBjYXNlcy4iIiIKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcnJvcihbJzIwMDktMTItMTZcdEtlbnQgVGFtdXJhXHQ8dGtlbnRA
Y2hyb21pdW0ub3JnPiddLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVycm9yKFsnMjAwOS0xMi0x
NiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnXHRSZXZpZXdlZCBieSBOT0JP
RFkuJ10sIDMpCi0KLQotY2xhc3MgVGV4dFByb2Nlc3NvclRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgotCi0gICAgIiIiVGVzdHMgVGV4dFByb2Nlc3NvciBjbGFzcy4iIiIKLQotICAgIGRlZiBtb2Nr
X2hhbmRsZV9zdHlsZV9lcnJvcihzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHRlc3Rf
aW5pdChzZWxmKToKLSAgICAgICAgIiIiVGVzdCBfX2luaXRfXyBjb25zdHJ1Y3Rvci4iIiIKLSAg
ICAgICAgcHJvY2Vzc29yID0gVGV4dFByb2Nlc3NvcigiZm9vLnR4dCIsIHNlbGYubW9ja19oYW5k
bGVfc3R5bGVfZXJyb3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5maWxl
X3BhdGgsICJmb28udHh0IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmhh
bmRsZV9zdHlsZV9lcnJvciwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcikKLQotCi1pZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>
<flag name="review"
          id="38210"
          type_id="1"
          status="+"
          setter="hamaji"
    />
    <flag name="commit-queue"
          id="38211"
          type_id="3"
          status="-"
          setter="cjerdonek"
    />
          </attachment>
      

    </bug>

</bugzilla>